我正在开发一个社交网络插件,在提到名称部分我开发了像
这样的脚本@[mention name](contact: mentio0n user id)
但是在显示时我需要将其重新转换为 Mention_Name ,为此我开发了一个正则表达式
/@+,*[A-za-z0-9_.' @ # ]+,*[(],*[a-zA-Z:]+,*[0-9]+[)]/
preg_replace("/@+,*[a-zA-z0-9.' ]+,*[(],*[contact:]+,*[0-9]+[)]/",
"<a style='color:blue;background-color:#FFFF01;' href=\"\.*/@+,*[A-za-z0-9_.' @ # ]+.*/\">\\0</a>",
'@[user2](contact:402551501) hello @[user3](contact:402551501)');
新的如何将其转换为喜欢
的名称<a href="id">Name</a>
用户可以在帖子中提及一个以上的人
答案 0 :(得分:0)
好的,我认为这就是你要找的东西:
$text = preg_replace('/@\[([^]]+)]\(contact:([0-9]+)\)/',
'<a href="url/$2">$1</a>', $text);
模式细节:
@
\[ # a literal [ (must be escaped, since it is a special character)
( # open capture group 1: name
[^]]+ # character that isn't a ], one or more times
) # close capture group 1
] # a literal ] (no need to escape)
\( # a literal ( (must be escaped)
contact:
( # open capture group 2: id
[0-9]+ # one or more digits
) # close capture group2
\) # a literal ) (must be escaped)
关于替换字符串:
替换字符串不是正则表达式,您不能在里面使用正则表达式符号。与字符串的唯一区别在于您可以使用占位符来引用模式(此处为$1
和$2
)的捕获组