[英]Simple REGEX Question in PHP
我想獲取以這種格式輸入的數據:
John Smith
123 Fake Street
Fake City, 55555
http://website.com
並將值存儲在變量中,如下所示:
$name = 'John Smith';
$address = '123 Fake Street';
$city = 'Fake City';
$zip = '55555';
$website = 'http://website.com';
因此,名字將是第一行中輸入的名稱,第二行中是城市的名稱,逗號分隔符zip之前,第三行中將輸入的內容,逗號和網站之后的第三行中,則是第三行中的內容。第五行
我不希望模式規則比這更嚴格。 有人可以告訴我如何做到這一點嗎?
好吧,正則表達式可能類似於:
([^\r]+)\r([^\r]+)\r([^,]+),\s+?([^\r]+)\r(.+)
假設\\r
是您的換行符。 當然,使用諸如explode()
東西將內容分割成幾行會更加容易...
$data = explode("\n", $input);
$name = $data[0];
$address = $data[1];
$website = $data[3];
$place = explode(',', $data[2]);
$city = $place[0];
$zip = $place[1];
如果您想要更精確的信息,可以使用以下方法:
$matches = array();
if (preg_match('/(?P<firstName>.*?)\\r(?P<streetAddress>.*?)\\r(?P<city>.*?)\\,\\s?(?P<zipCode>.*?)\\r(?P<website>.*)\\r/s', $subject, $matches)) {
var_dump( $matches ); // will print an array with the parts
} else {
throw new Exception( 'unable to parse data' );
}
干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.