2014-05-19 6 views
1

모든 해시 태그를 href로 바꾸는 기능이 있습니다.영어 이외의 문자 만 preg_replace

function hash_me($ret) { 
    $ret = preg_replace('/(\#)([^\s]+)/', ' <a href="tag/$2">#$2</a> ', $ret); 
} 

잘 작동합니다. 해시 태그를 사용하여 문자열 (및 나머지 비 해시 태그 단어)을 링크로 반환합니다.

사실 저는 hrefs로 대체하고 싶습니다 영어 문자를 포함하는 해시 태그 인입니다. 비 영어 해시 태그는 무시해야합니다. 위의 기능

preg_match('/#[^a-z\d]/i',$da_string) 

:

어떻게/맞춤 병합 할 수 있습니다?

감사합니다.

+0

은 "영어가 아닌 '무엇을 의미합니까? #centre (캐나다 영어)와 #centre (프랑스어)를 어떻게 구분합니까? – CanSpice

답변

3

당신은 유니 코드 문자 클래스 Latin 사용할 수 있습니다

function hash_me($ret) { 
    $ret = preg_replace('/#([\p{Latin}0-9]+)/', ' <a href="tag/$1">$0</a> ', $ret); 
} 

을하지만 라틴어와 영어는 서로 다른 두 가지가 명심하십시오.

function hash_me($ret) { 
    $ret = preg_replace('/#([a-z0-9]+)/i', ' <a href="tag/$1">$0</a> ', $ret); 
} 

이하 : 영어 문자 만 들어

function hash_me($ret) { 
    $ret = preg_replace('/#([^\W_]+)/', ' <a href="tag/$1">$0</a> ', $ret); 
} 
+0

!!! 미안, 내 질문에 실수가 있었어. 나는 영어가 아닌 것을 의미했다! !! 나는 어쨌든 upvote거야! 편집 : 허용! – Theodoros80

+0

@ Theodoros80 : 나는이 새로운 요구 사항으로 내 대답을 udapted. –

관련 문제