我想以这种格式输入数据:
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';
因此,名字将是第一行输入的内容 地址是第二行的任何内容 city是在逗号分隔符之前的第三行输入的内容 zip是逗号后第三行的任何内容 和网站是第五行的任何内容
我不希望模式规则比这更严格。有人可以说明如何做到这一点吗?
答案 0 :(得分:3)
好吧,正则表达式可能是这样的:
([^\r]+)\r([^\r]+)\r([^,]+),\s+?([^\r]+)\r(.+)
假设\r
是你的新行分隔符。当然,使用像explode()
之类的东西来分割内容更容易......
答案 1 :(得分:3)
$data = explode("\n", $input);
$name = $data[0];
$address = $data[1];
$website = $data[3];
$place = explode(',', $data[2]);
$city = $place[0];
$zip = $place[1];
答案 2 :(得分:0)
如果你想要更精确的东西,你可以使用它:
$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' );
}
欢呼声