在php中使用replace匹配完整单词

在php中使用replace匹配完整单词,php,html,css,regex,replace,Php,Html,Css,Regex,Replace,我在PHP中使用replace函数替换单词并在其下面划线 $replace='<span style="font-weight:bold; border-bottom: 1px solid #999999;" >'.$term.'</span>'; $post = str_ireplace($term, $replace, $post,$count); $replace='.$term'; $post=str_ireplace($term,$replace,$p

我在PHP中使用replace函数替换单词并在其下面划线

  $replace='<span style="font-weight:bold; border-bottom: 1px solid #999999;" >'.$term.'</span>';
  $post = str_ireplace($term, $replace, $post,$count);
$replace='.$term';
$post=str_ireplace($term,$replace,$post,$count);
问题是,如果匹配的单词是
are
,主题是
care
,它只在
are
下划线,而不是
c
,那么任何其他方法都可以使它在整个单词下划线。

$replace='0';
$replace='<span style="font-weight:bold; border-bottom: 1px solid #999999;" >$0</span>';
$post = preg_replace("/[a-z]*{$term}[a-z]*/i", $replace, $post);
$post=preg_replace(“/[a-z]*{$term}[a-z]*/i”,$replace$post);
[a-z]*
匹配任何字母序列,因此这将包括匹配项周围的其余单词<
$replace
中的code>$1替换为与正则表达式匹配的任何内容

$replace='$0';
$post=preg_replace(“/[a-z]*{$term}[a-z]*/i”,$replace$post);
[a-z]*
匹配任何字母序列,因此这将包括匹配项周围的其余单词<
$replace
中的code>$1替换为与正则表达式匹配的任何内容


使用
preg_replace()
而不是
str_ireplace()
,这样您就可以匹配单词边界。@Barmar这样就可以在整个单词下面划线了?当术语仅为“是”时,您实际希望如何匹配单词
care
?我认为您根本不希望它匹配。您应该使用类而不是内联css,这将使将来更易于管理。使用
preg\u replace()
而不是
str\u ireplace()
,这样您就可以匹配单词边界。@Barmar这样就可以为整个单词加下划线了?当术语仅为“是”时,您实际希望如何匹配单词
care
?我想你根本不想让它匹配。你应该使用类而不是内联css,这将使它在将来更易于管理。我在IDEone.com上添加了一个演示链接。在下一票和编辑之间有10多分钟的时间,所以我认为他们不是同一个人。我当然希望有人不会因为一点打字错误就投反对票。@JoshC:我没有投反对票。如果你看一下,你会发现有一个语法错误,我只是在更正。我在IDEone.com上添加了一个演示的链接。在下一票和编辑之间有10多分钟的时间,所以我认为他们不是同一个人。我当然希望有人不会因为一点打字错误就投反对票。@JoshC:我没有投反对票。如果你看一下,你会发现有一个语法错误,我只是在纠正它。