使用preg搜索字符串IN字符串

And*_* SK 0 php

如果有人按"ender"搜索并且该项目的标题是"Henderson",则此函数应返回:

H<span class="mark">ender</span>son
Run Code Online (Sandbox Code Playgroud)

不知怎的,当我打电话给mark_match("亨德森","恩德")时它不起作用;

有任何想法吗?这是获取原始项目标题并将其与搜索字符串进行比较的函数:

function mark_match($txt,$s) {
 # Remove unwanted data
 $txt = strip_tags($txt);
 # Remove innecesary spaces
 $txt = preg_replace('/\s+/',' ', $txt);
 # Mark keywords
 $replace = '<span class="mark">\\1</span>';
 foreach($s as $sitem) {
  $pattern = '/('.trim($sitem).')/i';
  $txt = preg_replace($pattern,$replace,$txt); 
 }
 return $txt;
}
Run Code Online (Sandbox Code Playgroud)

Gor*_*don 5

什么是正则表达式,什么时候可以使用str_replace()

$term = 'ender';
$span = '<span class="mark">' . $term . '</span>';
$marked = str_replace($term, $span, 'Henderson');
echo $marked; // outputs H<span class="mark">ender</span>son
Run Code Online (Sandbox Code Playgroud)

常规字符串函数通常是正则表达式的更快替代方法,尤其是当您要查找的字符串不是模式,而只是子字符串时.

Regex版本看起来像这样:

$term = 'eNdEr';
$span = '<span class="mark">$0</span>';
$marked = preg_replace("/$term/i", $span, 'Henderson');
echo $marked; // outputs H<span class="mark">ender</span>son
Run Code Online (Sandbox Code Playgroud)