替换以@符号开头的字符串中的单词

时间:2014-02-12 03:10:21

标签: php preg-replace

我需要用php中的链接替换包含@符号的单词

e.g:

$string = "you would love this @matt";

会变成“you would love this <a href="/user/matt">@matt</a>

从研究中我需要使用preg_replace(),但不知道从哪里开始。有任何想法吗? 感谢

2 个答案:

答案 0 :(得分:2)

Example

$string = "you would love this @matt";
$pattern = '/(^|\W)(@([a-zA-Z]+))/';
$replacement = '$1<a href="/user/$3">$2</a>';
echo preg_replace($pattern, $replacement, $string);

答案 1 :(得分:2)

您可以使用preg_replace_callback()

echo preg_replace_callback('/(?<=\s)@(\w+)/', function($match) {
    return sprintf('<a href="/user/%s">@%s</a>', 
       urlencode($match[1]), 
       $match[1]
    );
}, htmlspecialchars($string));

执行此操作可以为每场比赛应用其他格式。