在尝试获取包括空格在内的所有字符时,preg_match_all无法正常工作

时间:2012-04-29 00:35:28

标签: php mysql preg-match preg-match-all

这是我的功能:

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')}*/?>

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

1 个答案:

答案 0 :(得分:0)

'(\w+)'

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

'([\w\s]+)'