我的问题是,这个:
preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$&</b>', $string);
不起作用,我不知道为什么!
如果字符串为<b>$&</b> example
,则输出:an example
。这是错的。
它应该是:<b>an</b> example
我使用http://gskinner.com/RegExr/生成了这个正则表达式代码。
我知道显然$&
没有做正确的事情。但是我怎么能让它发挥作用呢?
答案 0 :(得分:10)
尝试使用此
preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$0</b>', $string);
$ 0意味着它将成为你的正则表达式中匹配的第一个东西,$ 1将成为第二个等等。
你也可以使用反向引用; \ 0得到第一个匹配你的位置,\ 1得到第二个匹配的东西等。More Info
答案 1 :(得分:2)
你需要在$
之后加上一个数字来引用正则表达式的分组部分。这将是第一组,因此为0.这里的工作示例:http://codepad.org/4V7GWdja
<?php
$string = "an example";
$string = preg_replace('/(?<=\>)\b(\w*)\b|^\w*\b/', '<b>$0</b>', $string);
var_dump($string);
?>
答案 2 :(得分:1)
$string = 'an example';
echo preg_replace('/^\b(.+?)\b/i', '<b>$1</b>', $string);
// <b>an</b> example