2014-02-25 63 views
0

我想阻止使用空間。我必須在哪裏編輯和寫什麼?Php preg_replace空間

$k = "".$post['dname'.$i].""; 
       $name = preg_replace("/[^a-zA-Z0-9_-\s]/", "", $k); 
       $database->setVillageName($database->RemoveXSS($varray[$i]['wref']),$name); 
+0

希望阻止使用空間?解釋這 –

+0

你是極客,你必須知道。 :)對不起,我的英語不好,但我怎麼解釋它..但它解決了刪除\ s – user3351524

回答

0

單從字符類取出\s

$name = preg_replace("/[^a-zA-Z0-9_-]/", "", $k); 

或(較短):

$name = preg_replace("/[^\w-]/", "", $k); 

編輯

$k = "".$post['dname'.$i].""; 
$name = preg_replace("/[^\w\s-]/", "", $k); 
if (preg_match('/^\s+$/', $name) { 
    // error : $name mustn't be all spaces 
    // do appropriate stuff 
} 
$database->setVillageName($database->RemoveXSS($varray[$i]['wref']),$name); 
+0

什麼不同的兩個代碼? – user3351524

+0

@ user3351524:'\ w'與'[a-zA-Z0-9_]'的含義相同,寫得越短越好:-) – Toto

+0

但是現在我不能使用任何空間。我想阻止只有一個空間使用。 – user3351524

0

如果您只想在字符串中允許一個空格,那麼您可以在正則表達式中使用or運算符。

$str = 'some name'; 

if(preg_match('/^([\w]+|[\w]+ [\w]+)$/', $str, $matches)) 
{ 
    echo 'success'; 
} 
else 
{ 
    echo 'fail'; 
} 

當字符串中有0或1個空格時,此代碼將成功。否則,如果它有更多的空間,它將失敗。

您可以更改代碼:http://codepad.viper-7.com/yTtWz1


一個preg_replace當然會是類似的:

preg_replace('/^([\w]+|[\w]+ [\w]+)$/', "", $str)