【问题标题】:php preg_replace with slash characterphp preg_replace 用斜杠字符
【发布时间】:2011-12-08 13:29:37
【问题描述】:
$remarks = preg_replace('/'.$searchText.'/i', '<span class="searchText">$0</span>', $remarks);

我使用上面的代码行来突出显示用户输入的搜索文本。它在 99% 的时间都有效,除非搜索字符串恰好包含正斜杠 (/) 字符。当他们这样做时,php 返回一个“未知修饰符”错误。我尝试通过在 preg_replace 行之前添加这行代码来使用反斜杠字符转义正斜杠。

$searchText = str_replace('/', '\/', $searchText);

这似乎没有帮助。我该如何完成这项工作?

【问题讨论】:

  • 您有什么理由在附加行中使用str_replace 而不是preg_replace 来删除任何额外的斜杠?对于附加行,您是否尝试过将 / 替换为空而不是转义?
  • preg_replace error 的可能重复项
  • 我使用 str_replace 而不是 preg_replace 因为我认为我不需要 preg_replace 的额外功能。如果我什么都不替换 /,那么它不会突出显示正确的文本。

标签: php preg-replace


【解决方案1】:

这就是preg_quote 的用途:

$searchText = preg_quote($searchText, '/');
preg_replace("/$searchText/i", ...)

【讨论】:

  • 添加该行后,我收到“编译失败:正则表达式在偏移量 0 处太大”错误。
猜你喜欢
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 2016-02-11
  • 1970-01-01
相关资源
最近更新 更多