PHP正则表达式没有返回任何匹配

时间:2013-05-29 07:54:58

标签: php regex

第一次尝试,我想我非常接近。

我需要在wp-config.php文件中识别这一行。

  

define('DB_NAME','test');

那就是......

  

define('DB_NAME','ANYTHING');

我想出了一个适用于在线正则表达式助手的工具。

(define).\'(DB_NAME)\',\s\'(.*?)\'.;

但是,当我将其插入preg_match时,它会返回null。

preg_match($customdb, '(define).\'(DB_NAME)\',\s\'(.*?)\'.;', $matches);
var_dump($matches);

我做错了什么?感谢。

2 个答案:

答案 0 :(得分:5)

你错过了正则表达式分隔符。此外,正则表达式作为第一个参数(如Rikesh所说):

preg_match('/(define).\'(DB_NAME)\',\s\'(.*?)\'.;/', $customdb, $matches);

然后,点匹配任何字符,而不仅仅是开/关括号。删除不必要的捕获组,您将获得:

preg_match('/^define\(\'DB_NAME\',\s\'(.*?)\'\);/m', $customdb, $matches);

答案 1 :(得分:4)

你可以使用这个不是防弹的正则表达式:

preg_match("@define\('DB_NAME', '([^']+)'\);@", $customdb, $matches);

在实践中,空格和引号可能会有所不同。