我正试图从此数据文件(Link)获取ESNU / UMEA的机场数据
我想在ESNU / UMEA之后和下一个机场列出之前匹配所有内容(尝试匹配'四个字母''斜线''多于三个字母'以匹配下一个机场标识符。
我做了很多次尝试但仍然没有成功,非常感谢任何帮助。
到目前为止我的代码:
$url = "http://www.lfv.se/AISInf2.asp?TextFile=idunesaavfr.txt&SubTitle=&T=Sverige%20VFR&Frequency=250";
$raw = file_get_contents($url);
preg_match('/ESNU\/UMEA([\s\S]*?)([A-Z]{4}/[A-Z]{3,})/',$raw,$data,PREG_OFFSET_CAPTURE);
答案 0 :(得分:2)
你需要转义斜杠,因为你的模式是用斜杠括起来的:
preg_match('/ESNU\\/UMEA(.*?)([A-Z]{4}\\/[A-Z]{3,})/',$raw,$data,PREG_OFFSET_CAPTURE);
我还将单反斜杠更改为双反斜杠,虽然不是非常必要,因为PHP将未知字符之前的反斜杠解释为字面反斜杠。
此外,我将[\s\S]
更改为等效的.
。
您还可以将封闭字符更改为例如#
:
preg_match('#ESNU/UMEA(.*?)([A-Z]{4}/[A-Z]{3,})#',$raw,$data,PREG_OFFSET_CAPTURE);