PHP正则表达式-在这种情况下,我现在做错了什么?

PHP正则表达式-在这种情况下,我现在做错了什么?,php,regex,Php,Regex,使用正则表达式: $pattern = "/adminvalues = \"\([^']+, '[^']+', MD5\('[^']+'\), '[^']+','[^']+','[^']+',[^']+,[^']+\)\";/"; preg_match($pattern, $data, $results); print_r($results); 搜索以下文本(括号内的值可能会更改…因此需要regex…): 因此,我正在寻找一种模式(在reg ex中),它基本上符合以下条件(我认为……): 其中

使用正则表达式:

$pattern = "/adminvalues = \"\([^']+, '[^']+', MD5\('[^']+'\), '[^']+','[^']+','[^']+',[^']+,[^']+\)\";/";
preg_match($pattern, $data, $results);
print_r($results);
搜索以下文本(括号内的值可能会更改…因此需要regex…):

因此,我正在寻找一种模式(在reg ex中),它基本上符合以下条件(我认为……):

其中:任何字符是(字母/数字/符号)的任意组合中的一个或多个。

我使用顶部的PHP代码没有找到匹配项,所以我显然做错了什么!我自己就是认不出错误。(我今天早上才开始使用regex真的…)我做错了什么?:)

解答:(感谢阿马尔·穆拉里)
读取用作
$data
(而不仅仅是显示内容)的php脚本时,请使用htmlspecialchars()

尝试以下正则表达式:

$pattern = <<<PATTERN
~
  adminvalues\s*=\s*
  "
  \(                  
    [^,]+,\s*
    '[^']+',\s*
    MD5\('[^']+'\),\s*
    '[^']+',\s*
    '[^']+',\s*
    \d,\s*
    \d,\s*
    \d\s*
  \)
  ";
~xm
PATTERN;

$pattern=搜索,但搜索的是什么?你想提取什么?“数组”中的每一个值?很简单:开始缩减正则表达式,直到它开始匹配东西,然后开始添加缩减的位。当它停止匹配时,问题就出现了。对于一个相当“常规”的字符串,例如,您最好使用一些简单的正则表达式来提取整个
()
部分,然后将其视为CSV字符串并将其分解()。我引用“array”是有原因的。它可能是一个多行文件/字符串吗?如果是,可能使用m或s开关。
[adminvalues = "(] [any character] [, '] [any character] [', MD5('] [any character] ['), '] [any character] [', '] [any character]  [', ] [any character] [, ] [any character] [, ] [any character] [)";]
$pattern = <<<PATTERN
~
  adminvalues\s*=\s*
  "
  \(                  
    [^,]+,\s*
    '[^']+',\s*
    MD5\('[^']+'\),\s*
    '[^']+',\s*
    '[^']+',\s*
    \d,\s*
    \d,\s*
    \d\s*
  \)
  ";
~xm
PATTERN;