2014-01-14 102 views
0

我正在使用SimpleXML从XML文档获取一些数据,并且如果数据包含搜索词,那么我希望它突出显示。因此用户首先输入一个搜索词,然后处理XML文档,逐个元素地执行并执行字符串搜索。我已经知道如何使用SimpleXML,但我不确定如何找到不区分大小写的字符串,并将其替换为自身加上一些标记。查找不区分大小写的字符串并替换(PHP)

  • 用户输入“brown fox”(不含引号)作为搜索词。
  • Web服务器遍历所有XML元素并查找不区分大小写的匹配(每个元素一个或多个)。
  • 如果匹配(一个或多个),则不区分大小写的术语将替换为其自身和一些用于标记的HTML代码。否则,元素文本只是在没有标记的情况下输出。

如果文档中包含:“快速的棕色狐狸跳过懒狗。”那么输出应该是相同的字符串,但通过CSS突出显示“brown fox”。

+0

的可能重复(http://stackoverflow.com/questions/2893551/case-insensitive-匹配在xpath) – Phil

+0

到目前为止,你有什么尝试?正如所写的,我们没有上下文来将解决方案插入到您当前的代码中。 – bishop

+0

解决方案不必适合我的代码。我使用的是XML,但是一个简单的字符串示例就足够了。 – HelloWorld

回答

0

这可能会为你工作:?XPath中不区分大小写匹配]

<?php 
$html = "The quick brown fox jumps over the lazy dog"; 
$replace = preg_replace('/\A(.*?)(brown fox)(.*?)\z/sim', '$1<span STYLE="font-size: x-large; color: #ffffff">$2</span>$3', $html); 
echo $replace; 
// The quick <span STYLE="font-size: x-large; color: #ffffff">brown fox</span> jumps over the lazy dog 
?> 

DEMO

+0

它的确如此,但是我希望我能够做到没有正则表达式,因为它们对我没有任何意义。你能解释一下这些符号的含义吗? – HelloWorld

+0

您可以重写正则表达式,以便突出显示多个术语吗? – HelloWorld

相关问题