php - 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
解决方案
你试过这个吗?
$search = "someg";
$tag = "someguy_(artist)";
$suggested = preg_replace('/'.$search.'/', '<span style="background: yellow;">'.$search.'</span>', $tag, 1);
echo $suggested;
在这种情况下,我认为不需要占位符
推荐阅读
- angular - 如何导航到其他页面
- mongodb - Mongodb 无法使用“在键中找到缺失值”对集合进行分片
- c++ - 从类型 'void*' 到函数指针的无效转换
- html - 打开和关闭组件 Angular 4 它不能正常工作
- xml - GATE 手动注释:一种类型的更多功能
- logging - 具有并行执行的 JUnit5 混合日志
- jquery - 将一行从一个表转移到另一个:jQuery
- c# - EF 设置 1 到 0..1 导航属性抛出异常
- java - Bouncy Castle - 如何使用 Bouncy Castle 实现 SignedAndEnveloped 数据
- sdk - 颤振包失败取决于来自 sdk 的 flutter_test any,它需要 SDK 版本 <2.0.0,版本解决失败