簡體   English   中英

PHP中的簡單REGEX問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM