我想提取字符串的匹配部分 - 数组中的数字部分
array("HK00003.Day","HK00005.Day")
。
<?php
$arr=array("HK00003.Day","HK00005.Day");
$result= array();
foreach ($arr as $item){
preg_match('/[0-9]+/',$item,$match);
array_push($result,$match[0]);
}
它可以得到结果:00003
00005
,看起来很乏味,preg_grep看起来很简单,但结果不是我想要的。
preg_grep('/[0-9]+/',$arr);
输出为“HK00003.Day”,“HK00005.Day”,而不是00003
00005
,
是否有更简单的方法来完成工作?
答案 0 :(得分:1)
这应该适合你:
(在这里,我只是摆脱阵列中的每个角色,而不是preg_replace()
的数字)
<?php
$arr = ["HK00003.Day", "HK00005.Day"];
$result = preg_replace("/[^0-9]/", "", $arr);
print_r($result);
?>
输出:
Array ( [0] => 00003 [1] => 00005 )
答案 1 :(得分:1)
您可以使用preg_filter
(已使用<?php
$arr = array("HK00003.Day","HK00005.Day");
$matches = preg_filter('/^.*?([0-9]+).*/', '$1',$arr);
print_r($matches);
?>
并且不需要其他回调函数)将数组中的每个条目替换为内部数字:
Array
(
[0] => 00003
[1] => 00005
)
<?php
$headers = 'From: webmaster@test.com' . "\r\n" .
'Reply-To: webmaster@test.com' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$to='testmail@test.com';
$subject='from camera with image mod';
$message=$_POST["msgbody"];
mail($to, $subject, $message, $headers);
?>
答案 2 :(得分:0)
你的代码很好,一点都不乏味。如果你想要一个单行程,你可以尝试这样的东西(删除所有不是数字的东西):
array_push($result, preg_replace("~[^0-9]~", "", $item));
答案 3 :(得分:0)
preg_grep返回与模式匹配的数组条目!因此,它返回一个条目数组而不是匹配的字符串
尝试以下:
preg_match_all('/[0-9]+/',implode('-',$arr),$result);