Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP preg_match在以开头的多行变量中查找行_Php_Regex_Preg Match - Fatal编程技术网

PHP preg_match在以开头的多行变量中查找行

PHP preg_match在以开头的多行变量中查找行,php,regex,preg-match,Php,Regex,Preg Match,它返回一个空数组。救命啊。。。我希望它与圣胡安国家气象局(或任何其他国家气象局所在城市)匹配。您需要在正则表达式中添加分隔符,例如 $stxt = "000 WGCA82 TJSJ 260200 FLSSJU FLOOD ADVISORY NATIONAL WEATHER SERVICE SAN JUAN PR 1000 PM AST FRI NOV 25 2011 PRC013-017-039-054-141-260209- /O.EXP.TJSJ.FA.Y.0568.000000T000

它返回一个空数组。救命啊。。。我希望它与圣胡安国家气象局(或任何其他国家气象局所在城市)匹配。

您需要在正则表达式中添加分隔符,例如

$stxt = "000
WGCA82 TJSJ 260200
FLSSJU

FLOOD ADVISORY
NATIONAL WEATHER SERVICE SAN JUAN PR
1000 PM AST FRI NOV 25 2011

PRC013-017-039-054-141-260209-
/O.EXP.TJSJ.FA.Y.0568.000000T0000Z-111126T0200Z/
/00000.N.ER.000000T0000Z.000000T0000Z.000000T0000Z.OO/
BARCELONETA PR-CIALES PR-FLORIDA PR-UTUADO PR-ARECIBO PR-
1000 PM AST FRI NOV 25 2011

...THE FLOOD ADVISORY WILL EXPIRE AT 1000 PM AST FOR ARECIBO...
UTUADO...FLORIDA...CIALES AND BARCELONETA MUNICIPALITIES...

&&

LAT...LON 1842 6666 1844 6656 1830 6657 1831 6672

$$
GV";

preg_match("(NATIONAL WEATHER SERVICE.*\n)", $stxt, $ofc);
print_r($ofc);

如前所述,您需要向正则表达式中添加分隔符
在现有代码中,
充当分隔符!!但你想用它们作为括号。因为您的正则表达式中没有捕获括号,所以没有捕获任何内容。

看起来您在这里遇到了一个错误。启用错误报告并显示要查找的错误。比如:

警告:preg_match():内部pcre_fullinfo()错误-3在线

发生该错误时,matches数组将为空。要测试正则表达式是否失败,请执行以下操作:

preg_match("/(NATIONAL WEATHER SERVICE.*\n)/", $stxt, $ofc);

顺便说一句,你的代码示例对我来说很好。但是,有些PHP安装的行为与您描述的类似,请参见。

它在
$ofc[0]
中返回整个匹配项。它们是有效的分隔符,已经存在于问题中给出的正则表达式中。@hakre:它们是有效的分隔符,但看起来OP试图使用括号来捕获匹配,除非使用其他分隔符,否则匹配不会发生。完全不是,匹配0在任何情况下都将包含匹配,对于给定的示例,即
$ofc[0]
。我认为OP遇到了一些其他问题,请参见。0是捕获组,
$ofc[0]
包含匹配项。
# Report all and display error messages
error_reporting(~0);
ini_set('display_errors', 1);

$result = preg_match("(NATIONAL WEATHER SERVICE.*\n)", $stxt, $ofc);

# Check return value for an error
if (FALSE === $result)
{
    throw new RuntimeException('preg_match() failed.');
}