2012-09-22 62 views
2

我想从这个数据文件得到ESNU /默奥机场数据(Link正则表达式中的单词之间的PHP比赛

我想的话ESNU /于默奥后列出的下一个机场之前,匹配所有(试图匹配'四个字母'斜杠“更多的则三个字母”,以配合未来机场的标识。

我已经做了很多尝试,仍然没有成功,任何的帮助深表感谢。

我的代码到目前为止:

$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); 

回答

2

你需要逃避斜线,因为你的模式是封闭用斜杠:

preg_match('/ESNU\\/UMEA(.*?)([A-Z]{4}\\/[A-Z]{3,})/',$raw,$data,PREG_OFFSET_CAPTURE); 

我也改变了单反斜线一个双反斜线,虽然不是stricly必要的,因为PHP解释反斜杠之前未知的字符作为文字反斜杠。
此外我将[\s\S]更改为.,这相当于。

您还可以将封闭字符更改为例如#

preg_match('#ESNU/UMEA(.*?)([A-Z]{4}/[A-Z]{3,})#',$raw,$data,PREG_OFFSET_CAPTURE);