uGain(幽亙)的写法不对的. 这个最好将"否"提出来, 然后写成如下形式:<?
if (!preg_match ("/[\"\'\>]|\bstring\b/i", "abcdefg")) {
print "YES";
} else {
print "NO";
}
?>期待qswang的解答.
if (!preg_match ("/[\"\'\>]|\bstring\b/i", "abcdefg")) {
print "YES";
} else {
print "NO";
}
?>期待qswang的解答.
qwe<a href="文件" string>ddslsdl</a>abc
将以上内容中的文件进行一个函数运算(比如:rawurlencode)后,再将运算后的内容替换回去。由于不能使用rawurlencode("\\2"),不能直接引用匹配匹配,只能先匹配再替换。
匹配规则为:"(<[^>]*(href|src)=\"([^\"'>]+)\"[^>]*>)"
但这里匹配替换后的内容还是能符合匹配规则,所以,需要在下一次匹配时,不能包含已经匹配替换过的内容。我现在准备的解决思路是:先循环匹配,利用匹配内容分割数据内容,对分割后的内容在匹配分割。最后重新组合。
//换个思路,满足你提出条件的是不符合的,排除法if (preg_match("/^\w*[<'\"]\w*$|^.*string.*$/",$try) )
{ print "Wrong expression!";
}else {echo "It is match!";}
{
}
循环,对每一行用上面的正则式处理判断处理就行了。或者,把你的代码贴上来。
<?
$patt="/(<[^>]*(href|src)=\")([^\"'>]+)(\" string>)/";
$str='qwe<a href="sdfstring" string>ddslsdl</a>abc';
echo "<xmp>";echo preg_replace($patt,"\\1".rawurlencode("\\3")."\\4",$str);
?>
我用了另一个函数, 写得麻烦了点:
<?function convert($preg)
{
return $preg[1].rawurlencode($preg[2]).$preg[3];;
}$test = "qwe<a href=\"二文件\">ddslsdl</a>adfad<a href='一文件'>ddslsdl</a>abc";$test = preg_replace_callback ("/(href=[\"\'])(\S*)([\"\'])/i", convert , $test);echo "<xmp>".$test;
?>
echo "<xmp>";
$pat="/(<[^>]*(href|src)=\")([^\"'>]+)(\" string>)/e";//加上e
echo preg_replace($pat,"'\\1'.rawurlencode('\\3').'\\4'",$str);
string 指的是不能出现在链接的地址里,也就是说不能在href=""里出现,同时这里面也不能出现"'>等字符。使用排除法是可以的,但我要进行将符合条件的进行循环运算。使用排除法无法进行循环。谢谢大家的帮助,希望能再帮俺想想办法。