我想获取以此格式输入的数据:
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';
我不希望模式规则比这更严格。有人可以展示如何做到这一点吗?
$data = explode("\n", $input);
$name = $data[0];
$address = $data[1];
$website = $data[3];
$place = explode(',', $data[2]);
$city = $place[0];
$zip = $place[1];
嗯,正则表达式可能是这样的:
([^\r]+)\r([^\r]+)\r([^,]+),\s+?([^\r]+)\r(.+)
假设
\r
是您的换行符分隔符。 当然,使用像 explode()
这样的东西将事物分成几行会更容易......
如果你想要更精确的东西,你可以使用这个:
$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' );
}
干杯