在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
。
我已经尝试过:
preg_replace('.*(' . $text . ').*', '<span style="background-color: #FFFF00">"$1"</span>', $val);
但我收到此错误Unknown modifier '*''
编辑:
我可以使用什么正则表达式来实现结果,例如?
答案 0 :(得分:3)
在正则表达式中:
你只是忘了在你的正则表达式周围加上括号。
$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);
答案 1 :(得分:2)
看起来我已经太晚了,但这是我制作的非正则版本。
$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)