2009-07-21 10 views
27

Come dovrei rilevare gli spazi bianchi all'interno di una stringa? Per esempio, ho una stringa di nome come:PHP - Rileva spazi bianchi tra stringhe

"Jane Doe"

Tenete a mente che io non voglio tagliare o sostituirlo, basta rilevare se esiste spazio tra la prima e la seconda stringa.

+1

ciao voglio solo chiedere, è ctype_space (stringa $ testo) nel phpmanual http://php.net/manual/en/function.ctype-space.php non funzionerà per rilevare gli spazi bianchi? – user1149244

risposta

74

Usa preg_match come suggerito da Josh:

<?php 

$foo = "Dave Smith"; 
$bar = "SamSpade"; 
$baz = "Dave\t\t\tSmith"; 

var_dump(preg_match('/\s/',$foo)); 
var_dump(preg_match('/\s/',$bar)); 
var_dump(preg_match('/\s/',$baz)); 

ouputs:

int(1) 
int(0) 
int(1) 
+3

Ha! Te lo suggerisco, ti svegli :-) Sei stato il primo a fornire un vero esempio ... – Josh

+0

Ha, sì. Vado sempre per esempi concreti se nessuno ne ha già fornito uno. Peccato che l'OP sembra aver selezionato quanto sopra come sua risposta: - \ – hobodave

+0

immagino di aver sempre considerato lo spazio come spazio a meno che tu non usi le entità html. –

8

È possibile verificare solo caratteri alfanumerici, che non è lo spazio bianco. Potresti anche fare una scenata per uno spazio.

if(strpos($string, " ") !== false) 
{ 
    // error 
} 
+2

Lo vuoi come strpos ($ stringa, "") invece. Haystack prima, poi ago – ThoKra

+0

Ricorda che questo rileverà solo spazi, non \ r \ t \ n ecc. – Josh

+0

Non è uno spazio bianco? – niteria

0

http://no.php.net/strpos

<?php 
if(strpos('Jane Doe', ' ') > 0) 
    echo 'Including space'; 
else 
    echo 'Without space'; 
?> 
+1

Questo non funzionerà se il primo carattere è uno spazio - "> 0" dovrebbe essere "! == false" – Greg

+0

Lo so, è stato così perché sembrava che volesse vedere se erano più nomi, non "Nome";) – ThoKra

8

Non sarebbe preg_match("/\s/",$string) lavoro? Il vantaggio di questo strops è che rileverà qualsiasi spazio bianco, non solo spazi.

+1

Ho paura che se invoco il mio motore regex per qualcosa come trovare un singolo personaggio, otterrà arrabbiato con me e iniziare a emettere parolacce :( – Kai

+1

Forse non lo nutrite abbastanza! ;-) – Josh

0
// returns no. of matches if $str has nothing but alphabets,digits and spaces. 
function is_alnumspace($str){ 
    return preg_match('/^[a-z0-9 ]+$/i',$str); 
} 
+0

'[a-z]' non include caratteri alfabetici. – tchrist

+0

Funziona con/i –

0
// returns no. of matches if $str has nothing but alphabets,digits and spaces. function 

    is_alnumspace($str) { 
      return preg_match('/^[A-Za-z0-9 ]+$/i',$str); 
    } 

// This variation allows uppercase and lowercase letters. 
+1

Questo non è corretto.'\ pL' è per le lettere, non' [A-Z] '. E le cifre sono '\ d' o' \ p {Nd} 'o probabilmente' \ pN'. Gli alfabetici sono '\ p {Alphabetic}', ma non credo che PHP supporti qualcosa di così utile e necessario. – tchrist

5

si può usare qualcosa di simile:

if (strpos($r, ' ') > 0) { 
    echo 'A white space exists between the string'; 
} 
else 
{ 
    echo 'There is no white space in the string'; 
} 

Questo rileverà uno spazio, ma non qualsiasi altro tipo di spazio bianco.

Problemi correlati