Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我想要匹配的替换图案_Php_Regex_Preg Replace - Fatal编程技术网

Php 我想要匹配的替换图案

Php 我想要匹配的替换图案,php,regex,preg-replace,Php,Regex,Preg Replace,我正在尝试替换匹配的字符串 参见下面的示例 <?php $str="this is going to bold [[this]]"; echo preg_replace("/[[(.*)]]+/i","<b>$1</b>",$str); ?> 因此,输出将如下所示 这会让这个更大胆 编辑: 这是警告 警告:preg_replace[function.preg replace]:编译失败:在第7行的C:\xampp\htdocs\page.ph

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

<?php
    $str="this is going to bold [[this]]";
    echo preg_replace("/[[(.*)]]+/i","<b>$1</b>",$str);
?>
因此,输出将如下所示

这会让这个更大胆

编辑:

这是警告

警告:preg_replace[function.preg replace]:编译失败:在第7行的C:\xampp\htdocs\page.php中的偏移量0处没有重复的内容

试试这个:

试试这个尺码

<?php
    $str="this is going to bold [[this]]";
    echo preg_replace("/(?:\[\[)(.*?)(?:\]\])/i","<b>$1</b>",$str);
?>
试试这个尺码

<?php
    $str="this is going to bold [[this]]";
    echo preg_replace("/(?:\[\[)(.*?)(?:\]\])/i","<b>$1</b>",$str);
?>

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

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

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

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

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

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

[]是PCRE中的特殊字符,因此必须进行转义。此外,您可能希望使用非贪婪组..*?否则你会遇到一些有趣的粗体问题。我改为…echo preg_replace/[[+.*+]]/i,$1,$str;。。。。但我看到了这个输出……这将bold@user1331534检查我的答案。[]是PCRE中的特殊字符,因此必须转义。此外,您可能希望使用非贪婪组..*?否则你会遇到一些有趣的粗体问题。我改为…echo preg_replace/[[+.*+]]/i,$1,$str;。。。。但我看到了这个输出……这将bold@user1331534检查我的答案。+和。*之间有什么区别?@user1331534+表示模式要匹配一次或多次,而*表示它将被匹配零次或多次,这意味着它可能与任何内容都不匹配。@user1331534 Wikipedia中的示例:ab*c匹配ac、abc、abbc、abbbc等等。ab+c匹配abc、abbc、abbbc等等,但不是一个我想改进的问题。+和。*之间的区别是什么?@user1331534+表示模式要匹配一次或多次,而*表示它将被匹配零次或多次,这意味着它可能与任何内容都不匹配。@user1331534 Wikipedia中的示例:ab*c匹配ac、abc、abbc、abbbc等等。ab+c匹配abc、abbc、abbbc等等,但不是acon问题,我想改进这个
echo preg_replace('/\[\[(.*?)\]\]/im', '<b>$1</b>', $str);