我正在尝试替换匹配的字符串 参见下面的示例
<?php
$str="this is going to bold [[this]]";
echo preg_replace("/[[(.*)]]+/i","<b>$1</b>",$str);
?>
所以输出看起来像这样
这将是粗体这个
修改
<?php
$str="bhai bhai *that* -wow- perfect";
$find[0]="/*(.+)*/i";
$find[1]="/-(.+)-/i";
$rep[0]="<b>$1</b>";
$rep[1]="<i>$1</i>";
echo preg_replace($find,$rep,$str);
?>
这显示警告
警告:preg_replace()[function.preg-replace]:编译失败:在第7行的C:\ xampp \ htdocs \ page.php中偏移0处不重复
答案 0 :(得分:4)
试试这个:
<?php
$str="this is going to bold [[this]]";
echo preg_replace("/\[\[(.+)\]\]+/i","<b>$1</b>",$str);
?>
输出
这将是粗体这个
提示:
[
和]
字符被视为特殊,因此您必须将其转义(例如:\[
,\]
)。
更新:
<?php
$str="bhai bhai *that* -wow- perfect";
$find[0]="/\*(.+)\*/i";
$find[1]="/\-(.+)\-/i";
$rep[0]="<b>$1</b>";
$rep[1]="<i>$1</i>";
echo preg_replace($find,$rep,$str);
?>
答案 1 :(得分:0)
尝试使用尺寸
<?php
$str="this is going to bold [[this]]";
echo preg_replace("/(?:\[\[)(.*?)(?:\]\])/i","<b>$1</b>",$str);
?>
答案 2 :(得分:0)
您需要转义正则表达式中的方括号。最终的表达式应如下所示:
echo preg_replace('/\[\[(.*?)\]\]/im', '<b>$1</b>', $str);
方括号是用于定义一组字符的特殊字符,因此如果您希望按字面意思匹配它们,则必须进行转义。