2014-12-30 2 views
0

나는 텍스트에서 모든 평범한 "twitter-like hashtags"를 매치하고 그것들의 하이퍼 링크를 만들기 위해 노력하고있다.정규식 건너 뛰기 정규식?

나는 약간의 성공을 거두었지만 이상하게도 정규 표현식 /(^|\s)#(\w*[a-zA-Z_]+\w*)/은 # 기호로 시작하는 문자열 (첫 번째 대문자는 나머지 문자가 올바르게 매칭 됨)을 건너 뛰고 있습니다. 전에 다른 것을 쓰면 첫 번째 경우가 제대로 일치합니다. # 기호가 문자열의 첫 번째 문자로 나타나는 경우에만 오류가 발생합니다.

이유가 무엇인지 알고 계십니까?

function make_hashes_into_twitter_hashtag_urls($content){ 

      $content = preg_replace('/(^|\s)#(\w*[a-zA-Z_]+\w*)/', '<a href="http://twitter.com/hashtag/\2?src=hash" target="_blank"><span class="color_my_hash">\1#</span>\2</a> ', $content); 

      echo $content; 

} 
add_filter('the_content','make_hashes_into_twitter_hashtag_urls'); 

감사합니다,

+0

'첫 번째 경우 건너 뜀'이란 무엇을 의미합니까? –

+0

당신에게 먹이를주고있는'$ content' 샘플을 보여줍니다. 그것은'(^ | \ s)'을 집어 들지 않을 수도 있습니다. – philtune

+0

@AvinashRaj, 나는 그가 첫 번째 인스턴스를 의미한다고 생각합니다. – philtune

답변

0

the_content(); 템플릿 태그 출력 HTML과 텍스트 및 HTML and regular expressions don't play nice together.

정확히 <p># (정확히 무엇입니까? the_content();이 출력 한 내용)에 대한 세부적인 내용을 알지 못해서 내 정규 표현식이 실패하게되었습니다.

이유를 알고 싶습니다. 정규식과 HTML을 섞어서 사용하지 않는 것이 좋습니다.

내 질문에 주로 답하지만이 상황을 해킹/해결하는 방법에 대한 추가 세부 정보는 대단히 감사하겠습니다.