Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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
preg_match在regexbuddy中工作,而不是在php中_Php_Regex_Pcre_Regexbuddy - Fatal编程技术网

preg_match在regexbuddy中工作,而不是在php中

preg_match在regexbuddy中工作,而不是在php中,php,regex,pcre,regexbuddy,Php,Regex,Pcre,Regexbuddy,好的,我有一个我创建的正则表达式,它在RegexBuddy中可以正常工作,但当我将它加载到php中时就不行了。下面是一个例子 使用RegexBuddy,我可以让它与以下内容一起工作: \[code\](.*)\[/code\] 检查点与换行符是否匹配,我添加了不区分大小写的选项,但它也是这样工作的 以下是php: $q = "[code]<div>html code to display on screen</div>[/code]"; $pattern = '/\[

好的,我有一个我创建的正则表达式,它在RegexBuddy中可以正常工作,但当我将它加载到php中时就不行了。下面是一个例子

使用RegexBuddy,我可以让它与以下内容一起工作:

\[code\](.*)\[/code\]
检查点与换行符是否匹配,我添加了不区分大小写的选项,但它也是这样工作的

以下是php:

$q = "[code]<div>html code to display on screen</div>[/code]";

$pattern = '/\[code\](.*)\[/code\]/si';

$m = preg_match($pattern, $q, $code);
$q=“[code]要在屏幕上显示的html代码[/code]”;
$pattern='/\[code\](.*)\[/code\]/si';
$m=预匹配($pattern,$q,$code);

<> >你可以看到我正在使用[代码] [/code ],然后一旦我可以提取它,我将在它上运行HTMLTENTIFESE()来显示,而不是渲染HTML代码。

< p>你在你的模式(/代码)的中间包括向前斜线。要么逃离它,要么用其他东西来分隔你的模式(我更喜欢!)。

你在你的模式(/代码)的中间包括向前斜线。要么逃避它,要么用其他东西来界定你的模式(我更喜欢!)。

这是因为你没有逃避结束标记
/

避开反斜杠也不会有什么坏处:

$pattern = "/\\[code\\](.*)\\[\\/code\\]/si";
PHP允许您选择任何字符作为正则表达式分隔符,因此我经常使用正则表达式中不使用的字符,如
@

$pattern = "@\\[code\\](.*)\\[/code\\]@si";

这是因为你没有逃脱结束标记
/

避开反斜杠也不会有什么坏处:

$pattern = "/\\[code\\](.*)\\[\\/code\\]/si";
PHP允许您选择任何字符作为正则表达式分隔符,因此我经常使用正则表达式中不使用的字符,如
@

$pattern = "@\\[code\\](.*)\\[/code\\]@si";

您需要在/code中转义正斜杠

$pattern = '/\[code\](.*)\[\/code\]/si';
另外,要意识到匹配项存储在$code中,而不是$m中


编辑:点击:p

您需要在/code中转义正斜杠

$pattern = '/\[code\](.*)\[\/code\]/si';
另外,要意识到匹配项存储在$code中,而不是$m中

编辑:被打败:p

这起作用了:

$pattern = '/\[code\](.*)\[\/code\]/si';
这起到了作用:

$pattern = '/\[code\](.*)\[\/code\]/si';

将正则表达式从RegexBuddy传输到PHP时,请在“使用”选项卡上生成源代码片段,或单击顶部工具栏上的“复制”按钮,然后选择“作为PHP preg字符串复制”。然后,RegexBuddy将自动添加PHP所需的分隔符和标志,而不会留下任何未被替换的内容。

将正则表达式从RegexBuddy传输到PHP时,请在“使用”选项卡上生成源代码片段,或单击顶部工具栏上的“复制”按钮,然后选择作为PHP preg字符串进行复制。然后,RegexBuddy将自动添加PHP所需的分隔符和标志,而不会留下任何未被替换的内容。

yup$m只是调试的一部分,以了解它是真是假yup$m只是调试的一部分,以了解它是真是假