首页 > 解决方案 > 比较忽略空格、换行符、换行符的两个字符串

问题描述

我想比较两个字符串并突出显示匹配连续 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但它没有突出显示。

标签: php

解决方案


一种方法是用 替换任何空格$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.

3v4l.org 上的演示


推荐阅读