我有一个用href替换所有hashtag的函数。
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 :(得分:3)
您可以使用unicode字符类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);
}