如何使用preg_match多行字符串来查找一些值

时间:2014-01-26 19:06:55

标签: php preg-match

在将此字符串解析为functionaly form(array)之前,我会在多行字符串中找到一些值:

 /**
 * @type string
 * @access read|write
 * @filling true
 */

我怎样才能在这个字符串中找到每3个值(@ type,@ access和@filling) 我尝试使用类似的东西:

 preg_match('/^.*@type{1}.*@access{1}.*@filling{1}.*$/',$string);

但不起作用。有人有想法解决这个问题吗?我会很有意思的

2 个答案:

答案 0 :(得分:0)

据我所知.与空格不匹配(如tab,换行符,空格)。您可以通过在必要时放置\n来明确提供新行。

答案 1 :(得分:0)

您只需要使用捕获组,加上\S代替.dotall修饰符:

$matches = array();
preg_match('/^.*@type\s+(\S*).*@access\s+(\S*).*@filling\s+(\S*).*$/s',$string,$matches);

echo "type: $matches[1]\n";
echo "access: $matches[2]\n";
echo "filling: $matches[3]\n";