下面是2寻呼机警报消息和我的时间疮头试图将第二消息的地址和工作细节提取到使用正则表达式一个PHP串...PHP +正则表达式表达式
这里有2例如消息:
0571040 15:45:21 30-04-12 @@ALERT F546356345 THEB8 STRUC1 SMELL OF SMOKE AND ALARM OPERATING 900 SOME ROAD SOMESUBURB /CROSSSTREET1 RD //CROSSTREET2 AV M 99 A1 (429085) CTHEB CBOROS PT28 [THEB]
0571040 15:45:21 30-04-12 @@ALERT F546356345 THEB8 STRUC1 SMELL OF SMOKE AND ALARM OPERATING 4/900 SOME ROAD SOMESUBURB /CROSSSTREET1 RD //CROSSTREET2 AV M 99 A1 (429085) CTHEB CBOROS PT28 [THEB]
你会注意到第二个地址有在开始900分之4或者可以说股九百分之四...这是我的问题开始的地方!地址有不同的格式,我有“正常”编号的地址和其他地方排序的“角落”地址,但是这个地址在地址900没有4的地址让我难住了。额外/已经把我的表情搞砸了......帮助! :)
在我表达我用的第一个斜杠作为第一个交叉路口,但在上面的第一第二种情况/现在是地址的一部分...下面是我到目前为止有:
function get_string_between2($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}
$fullstring = "$rawPage";
if (strpos($fullstring, ' STRUC1 ')!== false)
{
$parsed = get_string_between2($fullstring, "STRUC1", "/");
}
$input = "$parsed";
preg_match('/([^0-9]+)(.*)/', $input, $matches);
$jobdet = "$matches[1]";
$jobadd = "$matches[2]";
现在,这工作得很好顶消息,我得到这个作为结果:
$jobdet = SMELL OF SMOKE AND ALARM OPERATING
$jobadd = 900 SOME ROAD SOMESUBURB
$firstcrossstreet = /CROSSSTREET1 RD
$secondcrossstreet = //CROSSSTREET2 AV
对于第二个消息,这一切都错了这样的结果:
$jobdet = SMELL OF SMOKE AND ALARM OPERATING
$jobadd = 4
$firstcrossstreet =/900 SOME ROAD SOMESUBURB /CROSSSTREET1 RD
$secondcrossstreet = //CROSSSTREET2 AV
我知道这是/引起它,但我怎么能做一个表达式来处理这两种情况?