尝试获取包括空格在内的所有字符时,preg_match_all不起作用


preg_match_all not working when trying to get all characters including whitespace

这是我的函数:

function grabstuff()
{
    foreach (glob("../folder/*.php") as $fn) 
    {
        $file = file_get_contents($fn);
        preg_match_all("#'{'('('w+)'')}#", $file, $matches);   
        foreach ($matches[1] as $match) 
        {
            $query = ("ALTER TABLE xxxxx ADD COLUMN `$match` LONGTEXT AFTER xxxxx;");
            $result = mysql_query($query) or die("Err: ".mysql_error());
        }
    }
}

这是它在页面上寻找的内容:

<?/*{('test test')}*/?>

它忽略了存在空格的此实例。 它适用于测试测试和test_test。 没有收到任何php错误或mysql错误。 我需要使用'w+'S还是'w+'W? 我尝试了这两种方法,甚至(... (它仍然不起作用。 如何让我的上述函数识别 {(''(} 中的任何字符,无论它们是普通的 abc 字符还是空格。 我相信这很简单。 我已经在谷歌和这里做了研究,但找不到解决方案。(如果有帮助,任何给定页面上都会有多个 {(''(} 实例(。 我已经使用这个函数一段时间了,但想添加包含空格的功能。 谢谢!

'('w+)'

'w都是字母数字字符和下划线 - 不包括空格。只需使用字符集:

'(['w's]+)'