2014-02-25 72 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)