2011-01-12 17 views
6

Ho una parte di un'applicazione PHP che valuta una stringa lunga immessa dall'utente e estrae un numero che inizia sempre 20 caratteri nella stringa fornita dall'utente.Come estrarre una sottostringa da una stringa in PHP fino a quando raggiunge un determinato carattere?

L'unico problema è che non so per quanto tempo il numero per ogni utente sarà, tutto quello che so è la fine del numero è sempre seguito da un doppio virgolette (").

Come posso usare la funzione PHP stringa per estrarre una partenza sottostringa formare un punto specifico, e termina quando colpisce un doppio apice?

Grazie in anticipo.

risposta

11

è possibile utilizzare strpos per ottenere la prima posizione di " da la posizione 20 in data:

$pos = strpos($str, '"', 20); 

Tale posizione può quindi essere utilizzato per ottenere la stringa:

if ($pos !== false) { 
    // " found after position 20 
    $substr = substr($str, 20, $pos-20-1); 
} 

Il calcolo per il terzo parametro è necessaria in quanto substr attende che la lunghezza della sottostringa e non la posizione finale. Si noti inoltre che substr restituisce false se l'ago non può essere trovato nel pagliaio .

+0

bellissimo +1 .. –

0
<? 

$str = substring($input, 20, strpos($input, '"') - 20); 
echo $str; 

?> 

O qualcosa del genere ecc

1
$nLast = strpos($userString , '"'); 
substr($userString, 0, $nLast); 
0

trovare prima occorrenza di doppie virgolette dopo 20 caratteri, sottrazioni 19 - che ti dà la lunghezza della stringa desiderata:

$dq = strpos($string,'"',19); //19 is index of 20th char 
$desired_string = substr($string,19,$dq-19); 
0

Andare a basta aggiungere la risposta di Gumbo nel caso in cui abbiate bisogno di aiuto con la funzione sottostringa:

$pos = strpos($str, '"', 20); 
$substring = substr($str, 20, $pos); 
Problemi correlati