使用变音符号解析Twitter Hashtags并在点之前停止?

时间:2013-02-10 20:36:28

标签: php regex

我想要正确使用Twitter Hashtags。使用此代码:

    $html = preg_replace("#(^|[\n ])\#([^ \"\t\n\r<]*)#ise", "'\\1<a    href=\"".$website_content_url."/search=%23\\2\" target=\"_self\">#\\2</a>'", $html);

一切正常!但是,当我使用这个词时:#Männer!链接将包括!。但我希望链接在之前停止!以及我可以进入的其他迹象?或点。但是!应该仍然显示;)

这可能吗?

谢谢:)

1 个答案:

答案 0 :(得分:1)

让我们关注有趣的部分:

\#([^ \"\t\n\r<]*)

此模式的工作原理如下:

\#          // match #
(           // open a capture group
  [^...]    // a negated character class which matches any character 
            // that is **not** inside this class
  *         // match the previous group / class zero or more times
)           // close capture group

在角色类中,您有\"\t\n\r<,这意味着[^ \"\t\n\r<]匹配任何空格,引号,制表符,换行符,回车符或{ {1}}。您所要做的就是将标点符号添加到类中,例如:<

你不需要为afmk的afaik做任何特别的事。


学习正则表达式的良好起点:http://regular-expression.info/