[英]preg_match works in regexbuddy, not in php
好的,所以我有我创建的这个正则表达式,它在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);
因此,您可以看到我正在使用[code] [/ code],然后一旦将其解压缩,我将在其上运行htmlentities()来显示而不是呈现html代码。
您将正斜杠包含在模式(/代码)的中间。 要么逃避它,要么用其他东西来划界(我更喜欢!)。
将您的正则表达式从RegexBuddy转移到PHP时,请在“使用”选项卡上生成源代码片段,或者单击顶部工具栏上的“复制”按钮,然后选择将其复制为PHP preg字符串。 然后RegexBuddy将自动添加PHP所需的定界符和标志,而不会遗漏任何内容。
这是因为您没有逃脱结束标记/
转义反斜杠也不会造成任何伤害:
$pattern = "/\\[code\\](.*)\\[\\/code\\]/si";
PHP允许您选择任何字符作为RegEx分隔符,因此我经常会使用正则表达式中也未使用的字符,例如@
。
$pattern = "@\\[code\\](.*)\\[/code\\]@si";
这工作:
$pattern = '/\[code\](.*)\[\/code\]/si';
您需要在/ code中转义正斜杠
$pattern = '/\[code\](.*)\[\/code\]/si';
另外,要知道匹配项存储在$ code中,而不是$ m中
编辑:殴打它:p
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.