2010-09-22 16 views
36

In PHP, qual è il modo più semplice per restituire la parte di una stringa prima della prima occorrenza di un carattere specifico?Restituisce la parte di una stringa prima della prima occorrenza di un carattere in php

Per esempio, se ho una stringa ...

"The quick brown foxed saltato il etc etc."

... e sto filtrante per un carattere di spazio (" "), la funzione ritornerebbe 'Il'

Grazie!

+0

Si potrebbe trovare [ 's ($ str) -> beforeFirst (' ')'] (https : //github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L389) utile, come si trova in [questa libreria autonoma] (https://github.com/delight-im/ PHP-Str). – caw

risposta

50

Si potrebbe fare questo:

$string = 'The quick brown fox jumped over the lazy dog'; 
$substring = substr($string, 0, strpos($string, ' ')); 

Ma mi piace questo meglio:

list($firstWord) = explode(' ', $string); 
+0

Questo non genererebbe errori? Pensavo che il link dovesse avere un insieme Vairable corrispondente (o delimitato da virgola vuota) per il numero di variabili nell'array che stai esplodendo? – Alex

+1

nel caso in cui si desideri restituire la variabile invece di assegnarla 'return array_shift (explode ('', $ string));' –

+2

Se la stringa (qui uno spazio) non viene trovata, il primo restituisce una stringa vuota. Il secondo restituisce l'intera stringa. – Progrock

18

strstr() Trova la prima occorrenza di una stringa. Restituisce parte della stringa di pagliaio a partire dalla prima occorrenza dell'ago fino alla fine del pagliaio.

Terzo parametro: se TRUE, strstr() restituisce la parte del pagliaio prima della prima occorrenza dell'ago (escluso l'ago).

$haystack = 'The quick brown foxed jumped over the etc etc.'; 
$needle = ' '; 
echo strstr($haystack, $needle, true); 

Stampe The.

+0

Ho provato questo codice e ho ricevuto un avvertimento:" Conteggio parametri errato per strstr() ". Il motivo è che questo codice funziona solo da PHP 5.3.0. Sto usando una versione precedente di PHP. – matsolof

+1

Se l'ago non viene trovato restituisce falso. Che è quello che ti aspetteresti Quindi personalmente mi sembra la risposta migliore. In molte delle altre risposte probabilmente dovresti anche controllare che la stringa contenga il token altrimenti otterrai risultati imprevedibili. A meno che non sia scontato. – Progrock

+0

Pulito e semplice con buone convenzioni di denominazione per una chiara comprensione. – Kray

4

ne dite di questo:

$string = "The quick brown fox jumped over the etc etc."; 

$splitter = " "; 

$pieces = explode($splitter, $string); 

echo $pieces[0]; 
+0

Se lo splitter non viene trovato, restituisce l'intera stringa. – Progrock

+0

@Progrock, cosa c'è che non va? Cos'altro vuoi? – Soaku

+0

@Soaku, è solo un'osservazione. – Progrock

73

per Googler: strtok è meglio per quella

echo strtok("The quick brown fox", ' '); 
+5

Per me questa sembra essere la soluzione migliore. – matsolof

+0

La migliore soluzione [2]! –

+1

Solo downer su strtok, è se il token non viene trovato, restituisce l'intera stringa. – Progrock

Problemi correlati