2012-10-06 18 views

risposta

43

non hai bisogno di regex per questo, utilizzare trim():

$words = '  my words  '; 
$words = trim($words); 
var_dump($words); 
// string(8) "my words" 

Questa funzione restituisce una stringa con spazi spogliato dalla all'inizio e alla fine di str.

+0

Come mai questo non ha funzionato per me? Vedo ancora i miei spazi bianchi dopo le corde. Qualche suggerimento? Qualcuno? – ihue

+0

Forse non sono davvero bianchi. Ho riscontrato questo problema con i testi di Office Word. –

5

Per completezza (come tale questione è aggiunto regex), qui è una reimplementazione trim() in regex:

function preg_trim($subject) { 
    $regex = "/\s*(\.*)\s*/s"; 
    if (preg_match ($regex, $subject, $matches)) { 
     $subject = $matches[1]; 
    } 
    return $subject; 
} 
$words = '  my words  '; 
$words = preg_trim($words); 
var_dump($words); 
// string(8) "my words" 
1

Per qualche ragione due soluzioni di cui sopra non ha ancora lavorato per me, così mi si avvicinò con questa soluzione.

function cleanSpaces($string) { 
    while(substr($string, 0,1)==" ") 
    { 
     $string = substr($string, 1); 
     cleanSpaces($string); 
    } 
    while(substr($string, -1)==" ") 
    { 
     $string = substr($string, 0, -1); 
     cleanSpaces($string); 
    } 
    return $string; 
} 
+0

Tenere presente che mentre ciò può funzionare, l'overhead per la ricorsione rende estremamente lento e inefficiente. Non sono sicuro del perché trim non ha funzionato per te in quanto dovrebbe funzionare bene su qualsiasi stringa. –

Problemi correlati