在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)