PHP隐藏多个电话号码


PHP hiding multiple phone numbers

我正在尝试用[hidden]替换电话号码,并在单击时显示它们。只有一个数字时效果很好。但当有更多时,它会隐藏它,但问题是它为两个隐藏字段返回相同的数字。

$check ='111 111 1111 / 222 222 2222';      
preg_match('/[(]*'d{3}[)]*'s*[.'- ]*'d{3}[.'- ]*'d{4}/', $check, $phone_matches); 
echo sizeOf($phone_matches); //returns 1, why not 2??

差不多,如果你能帮我拿到sizeOf($phone_matches)来显示正确的金额,我会很好的!

编辑:

for($i=0; $i<sizeOf($phone_matches[0]); $i++){
    $check = preg_replace('/[(]*'d{3}[)]*'s*[.'- ]*'d{3}[.'- ]*'d{4}/', '<span class="hide">'.$phone_matches[0][$i].'</span><span class="show">show phone</span>', $check);
}
 echo $check;

您想要使用preg_match_all,而不是preg_match

preg_match_all('/[(]*'d{3}[)]*'s*[.'- ]*'d{3}[.'- ]*'d{4}/', $check, $phone_matches);
print_r($phone_matches);

但请注意,sizeof($phone_matches)仍然是1,因为匹配数组实际上是$phone_matches[0]

要遍历所有匹配项,请执行以下操作:

foreach ($phone_matches[0] as $match) {
    //Do something with $match
}

但是对于实际上想要完成的任务,根本不需要preg_match_all。一个简单的单行preg_replace就可以了:

$check = preg_replace('/[(]*'d{3}[)]*'s*[.'- ]*'d{3}[.'- ]*'d{4}/', '<span class="hide">$0</span><span class="show">show phone</span>', $check);