PHP隐藏多个电话号码

标签 php preg-replace

我正在尝试用 [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);

关于PHP隐藏多个电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25982597/

相关文章:

php - MySQL 三表连接——用户和好友图片

php - 将 php 应用程序商业化?

php - 在Docker容器中运行laravel环境

php regex - 将所有@usernames替换为字符串中的链接

PHP 编辑 Microsoft Word 文档 str_replace 和 preg_replace 不起作用

php - preg_replace() 替换第二次出现

php - gzip压缩不适用于xampp

javascript - 选择文件后自动在输入中获取文件名

php - 使用 preg_replace 突出显示带重音的搜索词

javascript - 将 PHP preg_replace 转换为 javascript 并将其设置为递归