2011-11-19 4 views
2

트위터 사용자 이름과 일치시키고 문자열로 바꾸고 싶습니다. 이것은 내가문자열을 일치시키고 바꾸는 정규식

<a href="http://lol.com">@omglol</a> 
같은 HTML 태그가 모든 사용자 이름을 바꾸려면 내가

RT @omglol I am hungry @lolomg bla 

같은 문자열이

/(^|[^a-z0-9_])[@@]([a-z0-9_]{1,20})([@@\xC0-\xD6\xD8-\xF6\xF8-\xFF]?)/iu 

이이 정규식입니다 PHP

함께

어떻게하면됩니까? 응답을위한 탁아

+0

코드도 게시 할 수 있습니까? –

+0

왜이 질문에 슬림하고 뚱뚱한가 .. ..? –

+0

@BillyMoon 어떤 사람들은 @와 @로 트윗하며 그들 모두와 일치시키고 싶습니다. – Blank

답변

4
$s = "RT @omglol I am hungry @lolomg bla"; 
$p = "/(@\w+)/"; 
$r = '<a href="http://lol.com">$1</a>'; 
print preg_replace($p, $r, $s); 

=> RT <a href="http://lol.com">@omglol</a> I am hungry <a href="http://lol.com">@lolomg</a> bla 
2

당신은 preg_replace을 사용합니다. 당신은 정규식을 가지고 있기 때문에 $ 치환 패턴을 만들어야합니다. 각각 캡처 그룹에 해당하는 $1$2$3 자리 표시자를 사용하십시오.

$text = preg_replace(YOUR_REGEX, "$1<a href=$2>:)$2</a>$3", $text); 

당신의 정규식은별로 영리하지는 않지만 그걸로 작업 할 수도 있습니다. 물론 href=에 대한 기본 URL/접두사를 추가 할 수도 있습니다.

트위터 이름을 어떻게 든 더 복잡한 URL로 변환해야한다면, 대신 preg_replace_callback을 사용하고 싶을 것입니다.

+0

감사합니다! ! ! ! ! – Blank

관련 문제