2

我正在尝试替换匹配的字符串,请参见下面的示例

<?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 处没有重复内容

4

3 回答 3

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);
?>
于 2012-04-24T08:47:59.487 回答
0

试穿这个尺寸

<?php
    $str="this is going to bold [[this]]";
    echo preg_replace("/(?:\[\[)(.*?)(?:\]\])/i","<b>$1</b>",$str);
?>
于 2012-04-24T08:48:57.663 回答
0

您需要转义正则表达式中的方括号。最终表达式应如下所示:

echo preg_replace('/\[\[(.*?)\]\]/im', '<b>$1</b>', $str);

方括号是用于定义一组字符的特殊字符,因此如果您希望按字面匹配它们,则必须对其进行转义。

于 2012-04-24T08:49:37.380 回答