2008-10-27 2 views
7

저는 백 엔드에 wysiwyg 편집기를 가지고 있으며, 제가 작성한 첫 번째 정규 표현식을 상회하고 있습니다. 이것은 preg_replace()을 사용하는 PHP4입니다. URI와 링크 된 텍스트를 캡처하고 있습니다.정규 표현식 - 선택 속성으로 모든 앵커를 일치 시키십시오.

@<a\shref=\"http[s]?://([^\"]*)\"[]>(.*)<\/a>@siU 

는 클라이언트는 새 창에서 열 수있는 모든 외부 링크를 원 그게 내가 모든 (희망) 외부 링크를 찾을 수 있지만, 내부 페이지의 앵커 링크를 떠날 사용 된 표현 등

나는 그래서 사용자가 링크에서 굵은 글씨체를 선택한 경우 wysiwyg 편집기에서도 style="font-weight: bold"을 추가합니다. 나는 최근에 정규식을 배우기 시작 했으므로이 문제에 대해 어떻게해야하는지 확신 할 수 없습니다.

어떻게하면됩니까?

답변

7

이 확실히 그것을 일치해야합니다 :

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

여기에 유용한 것은 게으른 경기입니다. *? 그것은 규칙적인 성냥과 달리 절대적으로 필요한만큼만 일치한다는 것을 의미합니다.

이 텍스트로 보여주기 :

/a.*c/ selects: "a b c d a b c" 
/a.*?c/ selects: "a b c" 
:

a b c d a b c d

이 정규 표현식에 다른 결과를해야합니다