使用正则表达式:
$pattern = "/adminvalues = \"\([^']+, '[^']+', MD5\('[^']+'\), '[^']+','[^']+','[^']+',[^']+,[^']+\)\";/";
preg_match($pattern, $data, $results);
print_r($results);
搜索以下文本(括号内的值可以更改...因此需要正则表达式...):
adminvalues = "(NULL, 'Admin12345', 'MD5(Admin12345)', 'Admin12345', 'Admin12345', 5, 0, 0)";
所以我正在寻找一种模式(在reg-ex中)基本上匹配以下(我认为......):
[adminvalues = "(] [any character] [, '] [any character] [', MD5('] [any character] ['), '] [any character] [', '] [any character] [', ] [any character] [, ] [any character] [, ] [any character] [)";]
其中:任何字符都是(字母/数字/符号)的任意组合中的一种或多种
我使用顶部的PHP代码没有匹配 - 所以我显然做错了!我自己无法发现错误。 (我今天早上才真正开始使用正则表达式...)我做错了什么? :)
解决:(感谢Amal Murali)
在读取用作$data
的php脚本时使用htmlspecialchars()(而不仅仅是显示内容)
答案 0 :(得分:1)
尝试以下正则表达式:
$pattern = <<<PATTERN
~
adminvalues\s*=\s*
"
\(
[^,]+,\s*
'[^']+',\s*
MD5\('[^']+'\),\s*
'[^']+',\s*
'[^']+',\s*
\d,\s*
\d,\s*
\d\s*
\)
";
~xm
PATTERN;