2011-08-11 4 views
0

:PHP - 모든 maito를 preg_replace이다 : 태그를 이메일 주소로이 질문에 비슷한

preg_match to extract mailto on anchor

하지만 난 그 변환됩니다 PHP로 교체하십시오 글로벌 문자열을하려고 오전 :

을 mailme : < ... ("a"태그 포함)

태그가없는 "[email protected]"에만. 이것은 추출물이 아니라 대체물이어야합니다.

저는 preg_replace를 사용하고 있지만 다른 많은 사람들처럼 정규 표현식에서 다소 가난합니다. 그것은 내가 후일이지만, 최선의 방법은 최종 해결책이 명확한 한 환영합니다.

감사합니다.

답변

1
<?php 

$html = '<a href="mailto:[email protected]">Mailme</a> (including the "a" tags)'; 
$html = preg_replace("~<a .*?href=[\'|\"]mailto:(.*?)[\'|\"].*?>.*?</a>~", "$1", $html); 
echo $html; 

working demo

+0

감사합니다 - 이것은 정규 표현식 기술이 부족한 것이 아니라는 것을 알고 있습니다. – jmadsen

+0

@genesis : (. *?) -> 의미 : ..... – K6t

+0

@ K6t : 첫 번째 발생까지 모든 것을 검색합니다. href. genesis

0

다음 정규식은 당신을 위해 일을 할 것입니다.

preg_replace(/<a .*?href=((?:\'|\"))mailto:(.*?)$1[^>]*>[^<]+</a>/i, "$2", $html); 

사용 [^ <] + *가 실패 일부는 그 줄 바꿈 따라서 HTML 발생 일어난 수 있기 때문에 시작과 끝 태그 사이. [^ <] +이 때 (이하 드문 경우 실패 부호보다는) <는 꼬리표 내용에서 나타난다. 대/소문자 구분을 위해 플래그 "i"를 사용합니다.