2012-01-10 10 views

답변

2

변경 '/\<a href\="(.*?)\">(.*?)\<\/a\>/i'에는 욕심 임니다 일치를 확인합니다.

0

는 여기에 더 나은 정규식 - 그것은이 태그 추가 필드를 다루는 : 나는 거기에 특수 문자의 모든 탈출을 생각

\<a (?:.*?)href\=[\"\']([^\"\']+?)[\"\'][^\>]*?\>(.+?)\<\/a\> 

, 나는 PHP가 고려 모르겠어요 '특별한' 하지만 기본적으로이 다음을 모두 일치해야합니다 : 나는 PHP에 대해 잘 모르지만, 펄에 하나 개 이상의 링크를 일치하도록, 또한

$subject = 'text <a id="test" href="http://google.com">LINK</a> text text <a href="http://google2.com" id="test">LINK2</a> text <a href="http://google3.com">LINK3</a>'; 

을, 당신은 정규식의 끝에서 /의 g 수정 필요 , 그래서 :

$search = array(
     '/\<a (?:.*?)href\=[\"\']([^\"\']+?)[\"\'][^\>]*?\>(.+?)\<\/a\>/ig' 
); 

이 검색 결과입니다. 어쩌면 preg_replace는 이미이 작업을 수행하지만 대상 텍스트에서 인스턴스 하나만 바꾸려는 경우가 있기 때문에 놀랄 것입니다.