Php 比较两个字符串,忽略空格、新行和换行符

Php 比较两个字符串,忽略空格、新行和换行符,php,Php,我想比较两个字符串并突出显示匹配的连续4个或更多单词 当字符串中有双空格或新行时,我遇到了问题,字符串没有突出显示 例如。 假设string1是Lorem ipsum,或者有时称之为lipsum,是用于排版的虚拟文本, 图形或网页设计。 String2是排版印刷品,图形 预期产出: Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in <span style="color:red">laying

我想比较两个字符串并突出显示匹配的连续4个或更多单词

当字符串中有双空格或新行时,我遇到了问题,字符串没有突出显示

例如。 假设string1是Lorem ipsum,或者有时称之为lipsum,是用于排版的虚拟文本, 图形或网页设计。

String2是
排版印刷品,图形

预期产出:

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.
Lorem ipsum,或者有时称之为lipsum,是排版时使用的虚拟文本,
图形或网页设计。
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);
?>

一种方法是将
$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);
$str1=“Lorem ipsum,或有时称之为lipsum,是排版时使用的虚拟文本,
图形或网页设计。“;
$str2=“布局
“印刷、图形”;
$regex=preg_replace('/\s+/','\s+',$str2);
echo preg_替换(“/$regex/iu”、$0、$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.
Lorem ipsum,或者有时称之为lipsum,是排版时使用的虚拟文本,
图形或网页设计。

一种方法是将
$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);
$str1=“Lorem ipsum,或有时称之为lipsum,是排版时使用的虚拟文本,
图形或网页设计。“;
$str2=“布局
“印刷、图形”;
$regex=preg_replace('/\s+/','\s+',$str2);
echo preg_替换(“/$regex/iu”、$0、$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.
Lorem ipsum,或者有时称之为lipsum,是排版时使用的虚拟文本,
图形或网页设计。

string1中搜索的string2是否始终是相反的?并非总是如此,但如果是新行,它会失败,string1@Valentino中的双空格总是string2在string1中搜索,或者也可能是相反的?并非总是如此,但如果是新行,string1@Valentino中的双空格则会失败。以下是我的示例。它应该突出显示$answer的最后一段,但由于新行,它没有突出显示。啊。。。这是一个与您所问的问题不同(而且更复杂)的问题…这就是为什么我做了一个简单的问题,并提出了一个简单的问题,但现在我不明白我应该把您的代码放在哪里。@Omi它应该可以。起初我还没有弄清楚你的代码是如何工作的(顺便说一句,这很酷),但再仔细看一看,我确实认为我的解决方案会适合它。实际上所有的努力都是由@fyrye完成的,而不是我。这是前面的问题链接,这是我的例子。它应该突出显示$answer的最后一段,但由于新行,它没有突出显示。啊。。。这是一个与您所问的问题不同(而且更复杂)的问题…这就是为什么我做了一个简单的问题,并提出了一个简单的问题,但现在我不明白我应该把您的代码放在哪里。@Omi它应该可以。起初我还没有弄清楚你的代码是如何工作的(顺便说一句,这很酷),但再仔细看一看,我确实认为我的解决方案会适合它。实际上所有的努力都是由@fyrye完成的,而不是我。这里是前面的问题链接