首页 > 解决方案 > PHP:如果给定的字符串包含括号,则 preg_replace 不返回任何内容

问题描述

我正在编写一个基于给定输入猜测标签的 php 脚本。返回猜测的标签时,我想突出显示用户搜索的标签部分。

$search = "fict";
$tag = "fiction";
$suggested = preg_replace('/'.$search.'/', '<span style="background: yellow;">$0</span>', $tag, 1);
echo $suggested;

返回<span style="background: yellow;">fict</span>ion

$search = "someg";
$tag = "someguy_(artist)";
$suggested = preg_replace('/'.$search.'/', '<span style="background: yellow;">$0</span>', $tag, 1);
echo $suggested;

但是,每当我使用包含括号的标签时,都不会返回任何内容。如何确保我的脚本适用于所有字符串输入?

编辑:我在之前的测试中使用了捕获组,但是我忘记将占位符更改为 $0。尽管如此,我的代码仍然不适用于字符串中的括号。

编辑 2:我刚刚更改了错误级别,并在包含括号的代码部分收到以下错误。Warning: preg_replace(): Compilation failed: missing ) at offset 9 in C:\wamp64\www\project\includes\tags.php on line 18

标签: php

解决方案


你试过这个吗?

$search = "someg";
$tag = "someguy_(artist)";
$suggested = preg_replace('/'.$search.'/', '<span style="background: yellow;">'.$search.'</span>', $tag, 1);
echo $suggested;

在这种情况下,我认为不需要占位符


推荐阅读