php - 在字符串php中,正规表达式 匹配任何单个字母

  显示原文与译文双语对照的内容
0 0

我讨厌这个代码,它是从html页面获取的,如果是美国或者加拿大,则验证它是否正常。

<?php
$contents = file_get_contents('853755.html');
preg_match_all('/<td id="u_zipCode">(.*?)</td>/s', $contents, $matches);
$data = implode("|",$matches[0]);
$string = str_replace(' ', '', $data);
if(preg_match('/^[1-9][0-9]*$/',$string)){
 echo"Canada";
 }
 else
 {
 echo"USA";
 }
?>

我试图搜索它的解决方案。 但我找不到解决方案。 我甚至尝试了 正规表达式,它应该只包含数字而不是单个字母。 但这似乎在任何方面都不起作用。 邮编是以这种格式给出的,

USA: 97365
USA: 97365-97366
Canada: j8n7s1
Canada: N2L5Y6

请帮我解决这个问题。 谢谢

时间:原作者:6个回答

0 0

由于只能有一个具有特定ID的元素,所以不需要使用 preg_match_all(),你可以使用 preg_match()

preg_match('/<td id="u_zipCode">(.*?)</td>/s', $contents, $match);

那么你不需要使用 implode() 。 捕获组匹配的部分将位于 match array的元素 1中。

$string = str_replace(' ', '', $match[1]);
if(preg_match('/^d{5}(-d{4})?$/',$string)) {
 echo"USA";
} else {
 echo"Canada";
}
原作者:
...