2010-08-02 79 views
2

好吧,當用戶輸入標籤到數據庫中時,我會使用逗號去掉HTML元素和分隔標籤,但由於某些原因,當我去除html標籤時,例如將空值與其他標籤一起提交到數據庫中如果用戶輸入以下數據。PHP用戶輸入的數據有問題?

<html>,tag2,tag3,tag4 //an empty value is entered 
,tag2,tag3,tag4 //this will also enter an empty value 

html標籤將被剝離,但一個空值被提交到數據庫中我怎樣才能阻止這種情況發生?

我認爲這與我的部分代碼有關。

$tags = explode(",", $_POST['tag']); 
+1

你如何剝離HTML? – carlsborg 2010-08-02 01:09:10

+0

'$ tag = mysqli_real_escape_string($ mysqli,trim(strip_tags($ purifier-> purify($ _ POST ['tag']))));' – pHpNUT 2010-08-02 01:20:10

回答

4

嘗試

array_filter(//remove elements that evaluate to FALSE (includes empty ones) 
    array_map('trim', //trim space around tags 
     array_map('strip_tags', //remove html tags from the... tags 
      explode(",", $_POST['tag'])))); //separate on comma 
+0

聰明的嵌套在那裏! +1,但對於初學者來說,這可能會讓人困惑。 – alex 2010-08-02 01:09:42

+0

這個去掉我的標籤,仍然輸入一個空值:( – pHpNUT 2010-08-02 01:25:00

+0

@pHp請看這裏:http://codepad.viper-7.com/X5GReo – Artefacto 2010-08-02 01:27:27

0

這將刪除空白標籤:

$tags = explode(",", $_POST['tag']); 
$new_set = array(); 

foreach ($tags as $tag){ 

    if ($tag == ''){ 

    $new_set[] = $tag; 
    } 
} 

$tags = implode(',', $new); 

// now store $tags into your database. 
+0

有一些錯誤...'$ new'將null。如果值等於空字符串,則您正在添加數組成員。 – alex 2010-08-02 01:07:32

0

將刪除所有空數組元素。

foreach($tags as $key => $tag) { 
    if (empty($tag)) unset($tags[$key]); 
} 
0

如果運行

explode(",", ",apple,pear,banana"); 

你會得到這樣一個數組:

array('', 'apple', 'pear', 'banana'); 

的爆炸()函數把字符串等。無論是有逗號。有三個逗號,這意味着它會將字符串拆分爲四個。因爲在輸入字符串中的第一個逗號之前沒有任何內容,這意味着第一個結果將是一個空字符串。

如果你不想要這個,你需要從explode()的結果中過濾掉任何空字符串。你可以使用這個array_filter():

array_filter(explode(",", ",apple,pear,banana"));