2014-09-22 16 views
5

Sto cercando di sostituire i numeri di telefono con [nascosto] e mostrarli di nuovo al clic. Funziona benissimo quando c'è un solo numero. Ma quando ce ne sono altri, lo nasconde, ma il problema è che restituisce lo stesso numero per entrambi i campi nascosti.PHP che nasconde più numeri di telefono

$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?? 

Praticamente, se si può aiutare a ottenere il sizeOf($phone_matches) per mostrare l'importo corretto, dovrei essere buono da lì!

EDIT:

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; 
+3

Prova 'preg_match_all': http://php.net/manual/en/function.preg-match-all.php –

risposta

5

che si desidera utilizzare preg_match_all, non preg_match

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

ma nota che sizeof($phone_matches) sarà ancora 1, dal momento che la serie di incontri è in realtà $phone_matches[0].

per scorrere tutte le partite si farebbe:

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

Ma per quello che sei realmente cercando di realizzare, non c'è alcun bisogno di preg_match_all a tutti. Una semplice linea preg_replace farà il trucco:

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

bene. ora come posso eseguire il controllo per $ phone_matches? Quando eseguo sizeOf ($ phone_matches) ottengo 1 ancora – BragDeal

+0

@ user235196 Vedere la mia modifica. – AlliterativeAlice

+0

come posso recuperare il numero corretto di telefoni trovati? in questo caso, come posso ottenere 2? – BragDeal

Problemi correlati