2010-05-26 18 views
1

我有一個來自POST表單的字符串,我想用其他字符替換所有空格。PHP不會檢測字符串中的所有空格

下面是我所做的:

$cdata = str_replace(" ","#",$cdata); 

而且我得到了這一點。

--- Contact-ID#=#148 [10274da8]#Sinhronizācija#=#private [1000137d]#Uzvārds#=#Zom [1000137c]#Vārds#=#Tana [1000130e]#Tālrunis#=#3333 [1000130e]#Mobilais#=#5555 

正如您所看到的,在「[10 ...」之前的間隔仍然存在。任何想法可能是什麼問題?

+2

你能發佈正確的$ cdata值嗎? – Karthik 2010-05-26 07:40:04

回答

1

您需要preg_replace這裏:

$cdata = preg_replace('/\s+/', '#', cdata); 
+3

你真的不需要使用正則表達式來處理這麼簡單的事情。正如Calvin L所描述的那樣,在這種情況下還有其他問題。 – 2010-05-26 07:46:12

+0

@OndrejSlinták:沒錯,他發現了這個問題,在這裏不需要正則表達式。 – Sarfraz 2010-05-26 07:54:55

+0

是啊...試過$ cdata = preg_replace('/ \ s + /','#',$ cdata); ,似乎不起作用... – 2010-05-26 08:03:02

4

這是最有可能,因爲它是一個換行符,\nstr_replace的第一個參數可以是要替換的字符數組。也可以是選項卡字符。或者使用preg_replace替換所有的空白字符。

編輯:

$chars_to_replace = array(" ", "\t","\n","\r","\o","\x0B");
$new_string = str_replace($chars_to_replace, "#", $cdata);

+0

嗯...非常奇怪,我替換了手冊中的所有空格字符(「」,「/ t」,「/ n」,「/ r」,「/ o」,「/ x0B」),工作......任何其他想法? – 2010-05-26 08:08:59

+0

您正在使用錯誤的斜槓(正斜槓)。你需要使用反斜槓(/)。 – Calvin 2010-05-26 08:13:24

+1

我完全有這個倒退。反斜槓= \ – Calvin 2010-05-26 08:18:49

0

得到它! HA-HA-HA! 作爲一名優秀的程序員,我在$ _POST上使用了mysqli_real_escape_string,然後將它分配給$ cdata。 現在我刪除它,似乎工作完美!多謝你們!

相關問題