我有一个支持主题标签的论坛。我正在使用以下行将所有主题标签转换为链接。我正在使用该(^|\(|\s|>)
模式来避免在 URL 中获取命名锚点。
$str=preg_replace("/(^|\(|\s|>)(#(\w+))/","$1<a href=\"/smalltalk.php?Tag=$3&".SID."\">$2</a>",$str);
当用户发布他们的消息时,我正在使用此行来获取主题标签以将它们存储在单独的字段中,这会获取所有主题标签,除了新行开头的那些。
preg_match_all("/(^|\(|\s|>)(#(\w+))/",$Content,$Matches);
使用m
&s
修饰符没有任何区别。在第二种情况下我做错了什么?
编辑:输入文本可以是纯文本或 HTML。问题输入示例:
#startoftextreplacesandmatches #afterwhitespacereplacesandmatches <b>#insidehtmltagreplacesandmatches</b> :)
#startofnewlinereplacesbutdoesnotmatch :(