php - 比较忽略空格、换行符、换行符的两个字符串
问题描述
我想比较两个字符串并突出显示匹配连续 4 个或更多单词。
当字符串中有双空格或换行时出现问题,字符串没有突出显示。
例如,假设 string1 是Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print,
graphic or web designs.
字符串 2 是laying out print, graphic
预期输出:
Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in <span style="color:red">laying out print,
graphic</span> or web designs.
PHP代码:
<?php
$str1 ="Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print,
graphic or web designs.";
$str2 = "/laying out print, graphic/iu";
echo preg_replace($str2, '<span style="color:red">$0</span>', $str1);
?>
注意:String1 格式应该相同。
这是完整的代码:https ://3v4l.org/3pBFR
在这个例子中,它应该突出显示最后一段,$answer
但它没有突出显示。
解决方案
一种方法是用 替换任何空格$str2
,\s+
然后它将匹配$str
. 然后可以像您当前所做的那样在 preg_replace 中使用它:
$str1 ="Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print,
graphic or web designs.";
$str2 = "laying out
print, graphic";
$regex = preg_replace('/\s+/', '\s+', $str2);
echo preg_replace("/$regex/iu", '<span style="color:red">$0</span>', $str1);
输出:
Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in <span style="color:red">laying out print,
graphic</span> or web designs.
推荐阅读
- android - 如何制作 facebook android 应用深层链接
- office-ui-fabric - 自定义团队应用程序中缺少文本输入的上下文菜单
- regex - 是否有正则表达式可以删除句子中最后多次出现的模式
- r - 用函数格式化数字
- reactjs - 无法使用 Next JS 和 Chakra UI 在响应模式下正确设置导航栏
- android - 如何使用 DiffUtil 将搜索过滤器添加到 RecyclerView
- .net - 为什么是 dotnet test——?不同于 dotnet 测试 /?
- jquery - AJAX 内容重新加载后 JS 处理程序和样式损坏
- mysql - 如何在有条件的 SQL 中选择平均计数
- java - Micronaut:注入后如何设置 HttpClient URL