Rob*_*low 1 php regex preg-match
我试图解析PHPIDS的XML规则列表(可在其网站http://phpids.org/上下载),使用XML的正则表达式对输入的URL进行解析.
现在,我对正则表达式知之甚少,而且我已经尝试过环顾四周,而且我没有找到有关它的更多信息,我发现它很有帮助.
如果URL == regex die(),我想做的就是这样的事情(psuedo);
这是我最近的一次尝试:
<?php
$file="default_filter.xml";
$load = simplexml_load_file($file);
$regex = $load->filter->rule;
$url = explode(" ","http://localhost/test.php");
$url2 = "http://localhost/test.php";
if(in_array($regex,$url))
{
echo "bad url";
}
if(preg_match($regex,$url2))
{
echo "bad url";
}
//The above gives me Warning: preg_match() [function.preg-match]: Unknown modifier '|' in C:\wamp\www\test.php on line 12
//Which, already i don't understand regex so i dont know why the above is a problem...
?>
Run Code Online (Sandbox Code Playgroud)
如果我可以让它工作,我将循环规则,但现在我只是尝试1正则表达式让它工作.
但我无法弄明白让正则表达式正常工作.
这是从XML文件中提取的正则表达式:
<rule><![CDATA[(?:"[^"]*[^-]?>)|(?:[^\w\s]\s*\/>)|(?:>")]]></rule>
Run Code Online (Sandbox Code Playgroud)
虽然我不明白一点......
提前感谢任何可以帮助我的人.
关于我唯一可以说的是缺少分隔符.鉴于$regex只包含正则表达式而不包含<![CDATA[这应该起作用的部分:
if(preg_match('#'.$regex.'#',$url2))
Run Code Online (Sandbox Code Playgroud)
试一试.