我正在尝试用[隐藏]替换电话号码并在点击时显示它们.只有一个数字时效果很好.但是当有更多时,它会隐藏它,但问题是它为两个隐藏字段返回相同的数字.
$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??
Run Code Online (Sandbox Code Playgroud)
差不多,如果你可以帮助我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;
Run Code Online (Sandbox Code Playgroud)
你想要使用preg_match_all,而不是preg_match
preg_match_all('/[(]*\d{3}[)]*\s*[.\- ]*\d{3}[.\- ]*\d{4}/', $check, $phone_matches);
print_r($phone_matches);
Run Code Online (Sandbox Code Playgroud)
但请注意,sizeof($phone_matches)仍然是1,因为匹配数组实际上是$phone_matches[0].
要迭代所有匹配,你会做:
foreach ($phone_matches[0] as $match) {
//Do something with $match
}
Run Code Online (Sandbox Code Playgroud)
但是对于你实际想要完成的事情,根本不需要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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
524 次 |
| 最近记录: |