我有一些警报设置,会定期通过电子邮件发送给我,在这些电子邮件中我会看到如下内容:
2002 Volkswagen Eurovan Clean title - $2000
这是一般的一致格式。这些也是可点击的链接。 我已经设置了一个脚本,它将正确地从正文字符串中提取链接,但我正在寻找的基本上是年份和来自这些标题的价格。有可能在列表中列出多个电子邮件。
所以我的问题是,如何使用preg_match_all来正确获取所有可能性,以便我可以将它们分解以获取第一个数据(年份)和最后一个数据(价格)?我是否会采用这种方法来确定我是否可以根据数字进行匹配,因为它假定格式通常是相同的?
答案 0 :(得分:0)
您可以尝试匹配以19
和20
开头的4位数字,并将这些数字命名为年,以及$
之后的数字价格,如果这些值始终位于字符串的开头和结尾,则使用锚点^
和$
:
^(?'year'\b(?:19|20)\d{2}\b)|(?'price'\$\d+)$
请参阅demo
示例IDEONE code:
$re = "/^(?'year'\\b(?:19|20)\\d{2}\\b)|(?'price'\\$\\d+)$/";
$str = "2002 Volkswagen Eurovan Clean title - \$2100";
preg_match_all($re, $str, $matches);
print_r(array_filter($matches["year"]));
print_r(array_filter($matches["price"]));
输出:
Array
(
[0] => 2002
)
Array
(
[1] => $2100
)