php - 将 JS 正则表达式转换为 PHP 正则表达式

标签 php javascript regex

我对正则表达式的理解不是很好,我需要将我的工作 JS 代码调整为 PHP。

这是 JavaScript 中的运行过程之一(它查找主题标签并从中创建 HTML anchor 标记):

exp = /(^|\s)#(\w+)/g;
messagetext = messagetext.replace(exp, "$1<a class='myHashtag' href='http://search.twitter.com/search?q=%23$2' target='_blank'>#$2</a>");

这在 PHP 中如何完成?

最佳答案

你可以这样做:

$messagetext = preg_replace('~^\h*+#\K\w++~m',
  '<a class="myHashtag" '
 .'href="http://search.twitter.com/search?q=%23$0" target="_blank">#$0</a>',
  $messagetext);

图案细节:

^       # line's begining
\h*+    # horizontal space (ie space or tab), zero or more times (possessive)
#       # literal #
\K      # forgets all the begining!
\w++    # [a-zA-Z0-9_] one or more times (possessive)

分隔符是~,但您可以选择其他字符。

我使用多行模式(m修饰符),因此^代表行的开头。

(所有格) 向正则表达式引擎指示它不需要通过在量词后面添加 + 来回溯。子模式变得更加高效。

关于php - 将 JS 正则表达式转换为 PHP 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16995560/

相关文章:

javascript - Jquery 类/对象创建和一个小问题。好奇为什么 "new"不起作用

regex - [:space:] and [:blank:]?之间有什么区别

javascript - 使用 XHR 调用将 JavaScript 值传递到 PHP 文件

Javascript 在屏幕上显示函数文本而不是打印值

javascript - 如何处理流中对象的新属性

javascript - 格式化电话号码

ruby-on-rails - 如何确定 rails 中是否存在返回 true 或 false 的匹配项?

php - 用 Umlaute 替换德语字符到简单的拉丁字符 php

php - mySQL for 循环在 31 行更新后停止工作 [实际上与 PHP 相关]

php - 查询生成器中属性的 DQL 访问属性(学说)