在数组中查找文本并使用<span>HTML标记,而不改变大小写


find text in array and surround it with <span> html tag without changing the case

在PHP中,我有一个数组,我想用html标签包围$text的所有实例,而不改变情况。例如:

$text = "aa";
array("aa", "baa", "aab", "bb", "Aa");

将变成

array("<span>aa</span>", "b<span>aa</span>", "<span>aa</span>b", "bb", "<span>Aa</span>");

使用str_ireplace将把Aa变为aa

I already tried:

preg_replace('.*(' . $text . ').*', '<span style="background-color: #FFFF00">"$1"</span>', $val);

但是我得到这个错误Unknown modifier '*''

编辑:

我可以使用什么正则表达式来实现示例中的结果?

的正则表达式的例子:

你只是忘了给你的正则表达式加上括号。

$text = "aa";
$val = array("aa", "baa", "aab", "bb", "Aa");
$val = preg_replace('/.*(' . $text . ').*/i', '<span style="background-color: #FFFF00">"$1"</span>', $val);
print_r($val);

看起来我太晚了,但这是我制作的非正则表达式版本。

$text = "aa";
$input = array("aa", "aab", "baa", "bb", "Aa");
$output = array();
foreach($input as $in) {
    $pos = stripos($in, $text);
    $extract = substr($in, $pos, strlen($text));
    $output[] = substr_replace($in, "<span>$extract</span>", $pos, strlen($text));
}
var_dump($output);
//produces:
array (size=5)
  0 => string '<span>aa</span>' (length=15)
  1 => string '<span>aa</span>b' (length=16)
  2 => string 'b<span>aa</span>' (length=16)
  3 => string '<span>bb</span>' (length=15)
  4 => string '<span>Aa</span>' (length=15)