使用preg_match将模式中的通配符作为特定变量

时间:2016-01-06 14:08:33

标签: pattern-matching preg-match match wildcard

我试图通过在匹配模式中使用通配符将输入字符串中的特定信息转换为变量。

$input   = "my name is John Smith and I live in Las Vegas";
$pattern = "my name is * and I live in *";

我知道preg_match会给我所有的通配符(\ w +),所以用(\ w +)替换模式中的*给了我“John Smith”和“Las Vegas”但是我怎样才能给出一个变量名模式,所以我可以做

$pattern = "my name is *name and I live in *city";

并将结果放入变量中,如下所示:

$name = "John Smith"
$city = "Las Vegas"

任何帮助找到相应的preg_match模式都将受到高度赞赏!我也想知道*角色是否是明智的选择。也许$或%更有意义。

1 个答案:

答案 0 :(得分:1)

这里是(在php中):

<?php
$input   = "my name is John Smith and I live in Las Vegas";
$pattern = "/my\sname\sis\s(?P<name>[a-zA-Z\s]+)\sand\sI\sLive\sin\s(?P<loc>[a-zA-Z\s]+)/si";
preg_match($pattern,$input,$res);
$name = $res["name"];
$loc = $res["loc"];
var_dump($res);

结果:https://eval.in/498117