【问题标题】:PHP preg_replace() error with regular expression正则表达式的 PHP preg_replace() 错误
【发布时间】:2012-12-04 02:01:11
【问题描述】:

我已经通过 curl_exec 将网页返回到一个字符串中。然后我试图用字符串 javascript:void() 替换所有超链接。

我在http://regexhero.net/tester/ 测试过的正则表达式是

(?<=href=("|'))[^"']+(?=("|'))

这非常有效。当我尝试使用 preg_replace() 在 PHP 中使用它时,出现错误:Unknown mofifier '['

代码sn-p是

$pattern = "(?<=href=(".'"'."|'))[^".'"'."']+(?=(".'"'."|'))";
$replacement = "javascript:void();";
$result = preg_replace($pattern,$replacement,$result) ;

我也尝试过像这样转义字符串

$pattern = "(?<=href=(\"|'))[^\"']+(?=(\"|'))";

我在 Win 环境下编写脚本,但要在 LAMP 上运行。

感谢您的意见

【问题讨论】:

  • 你的正则表达式是不是太复杂了?你不能吗href=["'](\s*?)['"]

标签: php preg-replace


【解决方案1】:

您需要在模式中添加分隔符。在 JavaScript 中,这些是模式前后的 /。你可以对 PHP 使用相同的方法,但我更喜欢使用 ~

$pattern = "~(?<=href=(".'"'."|'))[^".'"'."']+(?=(".'"'."|'))~";

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    相关资源
    最近更新 更多