preg_match在regexbuddy中工作,而不是在php中
好的,我有一个我创建的正则表达式,它在RegexBuddy中可以正常工作,但当我将它加载到php中时就不行了。下面是一个例子 使用RegexBuddy,我可以让它与以下内容一起工作: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 = '/\[
\[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只是调试的一部分,以了解它是真是假