以*开头的字符串中的所有单词都应为粗体。 这是我到目前为止所尝试的:
$string = "This is *a string to *check *bold";
echo preg_replace('/*(\w+)/', '<b>\1</b>', $string);
这给了我错误:
这是一个* check *粗体的字符串警告:preg_replace():编译 失败:没有什么可以在......的偏移0处重复。
答案 0 :(得分:1)
你错了preg_replace()
正则表达式
*
是正则表达式中的特殊字符,应该进行转义。我使用#
作为分隔符以获得更好的可见性。
检查以下代码:
$string = "This is *a string to *check *bold";
echo preg_replace('#\*(\w+)#', '<b>$1</b>', $string);
答案 1 :(得分:1)
$string = "This is *a string to *check *bold";
echo preg_replace('/\*(\w+)/', '<b>\1</b>', $string);
答案 2 :(得分:1)
你必须逃避“*”
所以正则表达式将成为
*([\ W] +)
$string = "This is *a string to *check *bold";
echo preg_replace('@\*([\w]+)@', '<b>$1</b>', $string);