2017-11-06 4 views
1

해시 태그를 href 및 해시 태그로 교체하려고합니다. 내가 솔루션 here을 발견하고, 내 요구를 위해 그것을 수정하지만,이 점 . 후 텍스트를 무시하고, 절단, 다음 문자 :Instagram은 해시 태그를 실제 링크로 바꿉니다.

내 기능 :

function hashtag($str) { 
    return preg_replace(array('/#(\w+)/', '/@(\w+)/'), array(' <a href="/t/$1" class="hashtag">#$1</a>', ' <a href="/u/$1" class="username">@$1</a>'), $str); 
} 

근무 예 :

@visual => <a href="/t/visual" class="hashtag">#visual</a> 

작동하지 않는 예 :

(210)
@visual.test => <a href="/t/visual" class="hashtag">#visual</a>.test 

어떻게이 제대로 작동하고 가지고 패턴에 .을 추가 할 수 있습니다

@visual.test => <a href="/t/visual.test" class="hashtag">#visual.test</a> 

덕분에 많이.

+1

정규식에서'\ w'를'[\ w.] '로 변경하십시오. – ctwheels

+0

위에서 언급 한 변경 사항은 아래 Jan의 답변을 참조하십시오. – ctwheels

+0

예,이게 :) – Legionar

답변

2

당신은

function hashtag($str) { 
    return preg_replace(
      array('/#(\w+)/', '/@([\w.]+)/'), 
      #      --^-- 
      array(' <a href="/t/$1" class="hashtag">#$1</a>', ' <a href="/u/$1" class="username">@$1</a>'), 
      $str); 
} 

그냥 문자 클래스에 넣어 갈 수있는, 즉.

+0

. 고마워. – Legionar

+0

예, 타임 아웃까지 기다리고있었습니다. – Legionar

관련 문제