2013-09-24 216 views
0

我有一個字符串存儲在數組中,並最終使用php和PDO插入到SQL數據庫中。當我查看數據庫時,存在一個= 20,它存儲在字符串的末尾,我希望將其刪除。如何從我的字符串中刪除此額外字符?

我的代碼看起來是這樣的:

$name = trim($message_item[1]); 
$name = addslashes($name); 
$so_row = "INSERT into sales_order (name) VALUES('$name')"; 
$dbmrp->exec($so_row); 

我認爲TRIM()將消除任何額外的東西,但它似乎並沒有幫助。我可以使用preg_replace('/ \ s + /','',$ name)來刪除它,但是然後我丟失了所有空白,包括中間那些我想保留的空白。那麼什麼是= 20,我該如何擺脫它?

更多信息- $ message_item是從爆炸從電子郵件讀取的字符串中創建的數組。

+4

您的代碼易受SQL注入攻擊!請學習如何使用準備好的語句! –

+0

你想修剪什麼?空格或'= 20'? – user2180613

+0

什麼是$ message_item,它來自哪裏?最大的問題是 - 「= 20」來自哪裏呢? –

回答

0

微調只是爲了在開頭和字符串的結尾空格。 你可以像多諾萬說的那樣去除所有3個最後的字符。

$name = substr($name, 0, -3); 

或更換所有= 20的空

str_replace('=20', '', subject) 

但我真的認爲你應該弄清楚爲什麼你得到一個字符串與此= 20。任何刪除它的解決方案都不過是一種解決方法。

0
rtrim($mesage_item[1], '=20'); 
2

您可以使用substr()刪除「= 20」在您的字符串的末尾像。

$name = substr($name, 0, -3); 

http://php.net/manual/fr/function.substr.php

+0

我嘗試了類似的東西,但是使用了-1,因爲它實際上只是一個在進入數據庫的過程中被翻譯爲= 20的單個不可見項目。這樣做的問題是,有時額外的角色在那裏,有時不是。 – xena

+0

檢查數據庫中的編碼。但是我看不到問題。你可以在插入基地之前寫下$ so_row的值嗎? –

+1

好吧,好吧,我想= 20是之前有。很明顯,在這個特定的情況下,= 20不在名稱上,但它出現在其他名稱上。所以也許一個preg替換解決方案將工作。感謝您的幫助。 – xena

0
$name = preg_replace('/=20$/', '', $name);