php关联数组,preg_match和循环

问题描述 投票:0回答:2

我有一个关联数组,可以从中提取两个带有正则表达式的数字

<?php           
 $link = array (
 "model_one" => "Only 50.95 usd for 2 years or 700.30 usd.",
 "model_two" => "Only 70.95 usd for 2 years or 900.20 usd.");
 foreach ($link as $key=>$links) {
    $pattern = '/.\d+(?:\.\d{2})?((?<=[0-9])(?= usd))/';
    preg_match_all($pattern,$links,$result);
    $final = array();
    foreach($result[0] as $k=>$v) {
    $final[]=$v;
    echo $final[0]; // print 50.95 50.95 70.95 70.95    
    }
 }
?>

我无法检索与键关联的每个数字

示例:

model_one 50.95
model_one 700.30
model_two 70.95
model_two 900.20
php arrays associative
2个回答
2
投票

您需要遍历包含匹配值的数组:

foreach ($link as $key => $links) {
    $pattern = '/\d+(?:\.\d{2})?((?<=[0-9])(?= usd))/';
    preg_match_all($pattern,$links,$result);

    foreach ($result[0] as $amt) {
        echo "$key $amt\n";
    }
}

注意,我还从正则表达式的开头删除了句点字符(.)。它将匹配任何非空格字符。这将导致捕获的开头包含一个空格。

输出:

model_one 50.95
model_one 700.30
model_two 70.95
model_two 900.20

Demo


0
投票

这些链接不再起作用您可以重新发布吗?

eval.in/124440eval.in/124473

© www.soinside.com 2019 - 2024. All rights reserved.