PHP:爆炸动态改变字符串

时间:2014-03-23 20:18:05

标签: php regex string symfony substr

所以我使用GuzzleSymfony 2 DOMCrawler解析来自其他网站的信息。并且有一个我解析的字符串需要爆炸。问题是,每次我都不同。因此,我无法创建恒定的模式,因为它们的长度不同。

例如,我第一次获得DY947CPHVNO而另一次获得DA9128VNOBGODY989BGOCPH。我的目标是像那样爆炸它:

我将解释这些字符串,它们并不那么复杂。我正在从航班预订网站解析它们。因此,首先4-6个符号是航班号,然后其他符号是离开和到达(它们的长度是3个符号)。

//first string DY947CPHVNO - it means that it's flight number DY947 from CPH to VNO
//DY947 CPH VNO
$string1 = DY947; //flight number
$string2 = CPH; //from CPH
$string3 = VNO; //to VNO

//first string DA9128VNOBGODY989BGOCPH - it means that it's flight number DA9128 from VNO to BGO then flight number DY989 from BGO to CPH 
//DA9128 VNO BGO DY989 BGO CPH
$string1 = DA9128; //flight number
$string2 = VNO; //from VNO
$string3 = BGO; //to BGO
$string4 = DY989; //flight number
$string5 = BGO; // from BGO
$string6 = CPH; //to CPH

第二个字符串意味着到达目的地的人需要2个航班。

这里唯一的恐龙就是航班号,因为我不知道它的长度,所以我不能使用substrregex。城市总是包含3个符号。而且它没有改变。

有任何帮助吗?我在stackoverflow中看到了类似的问题,但没有找到正确答案。

2 个答案:

答案 0 :(得分:0)

尝试使用:

(?:[A-Z]{2}\d+[A-Z]{6})+

两个大写字母后跟任意数字的数字(航班号),后跟6个大写字母(从/到);该组的一次或多次出现(停止)。

答案 1 :(得分:0)

首先请尝试了解正则表达式。这是the great site。如果你不学习自己,那么每次都必须求助给其他人。提供您迄今为止所做的示例总是更好,以便SO社区可以从那里继续指导您。

这是一个令人厌恶的正则表达式:

preg_match("/^([a-z0-9]{4,6})([a-z0-9]{3})([a-z0-9]{3})(?:([a-z0-9]{4,5})(\\3)([a-z0-9]{3}))?$/i", $numbers, $m);
print_r($m);

使用this site,然后将正则表达式粘贴到那里以获得解释。