我的问题是,这个:
preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$&</b>', $string);
不工作,我不知道为什么!
它输出: <b>$&</b> example
,如果该字符串是an example
。 所以这是错误的。 它应该是<b>an</b> example
我生成这个正则表达式代码与http://gskinner.com/RegExr/在那里工作。
我知道,很明显, $&
是不是做了正确的事情。 但我怎么能得到它的工作?
能否请您给我一个提示?
与此代之以
preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$0</b>', $string);
$ 0意味着它将成为你的正则表达式匹配的第一件事,$ 1将成为第二等。
你也可以使用反向引用; \得到0从你身在何处匹配回来的第一件事,\ 1匹配得回等第二件事更多信息
你需要把一个号码后$
来指代regex.Here的分组情况下它会是第一组,因此0工作示例这里: http://codepad.org/4V7GWdja
<?php
$string = "an example";
$string = preg_replace('/(?<=\>)\b(\w*)\b|^\w*\b/', '<b>$0</b>', $string);
var_dump($string);
?>
$string = 'an example';
echo preg_replace('/^\b(.+?)\b/i', '<b>$1</b>', $string);
// <b>an</b> example