2013-09-26 122 views
-1

我得到了下面的字符串,從解碼十六進制字符串的結果,PHP - 刪除多餘的空格

" g e t s m h " 

,但結果應該是,

"get smh" 

我相信它可以使用的preg_replace完成,但我不知道正則表達式。好心提醒。謝謝。

回答

2

嘗試以下操作:

\s(?!\s) 

而且什麼也沒有更換。

\s(?!\s)會匹配每個空格字符(以及換行符和回車符,換頁符和製表符,但如果它是單行,這應該不是問題),除非它們後面跟着另一個空格字符,以便在「」( 2個空格),只有第二個空格被替換爲空格。

你使用這樣的:

$newstring = preg_replace('/\s(?!\s)/', '', $oldstring); 
+0

我試過了preg_replace('\ S(? !\ s)','',$ string),我得到以下錯誤,分隔符不能是字母數字或反斜槓 – sulaiman

+0

您需要使用分隔符。我以爲你知道如何使用它們?我將在我的答案中加入一些用法 – Jerry

+0

@sulaiman請參閱編輯答案和[viper-7](http://viper-7.com/EaKCCU)演示。 – Jerry

0

嘗試。跳它會工作

$str = " g e t s m h "; 
$str = explode(' ', $str); 
$str_1 = str_replace(' ', '', $str[0]); 
$str_2 = str_replace(' ', '', $str[1]); 
echo $str_1.' '.$str_2; 
+0

我更喜歡使用preg_replace和更少的代碼。不管怎麼說,還是要謝謝你。 – sulaiman

0

如果有人覺得這是十六進制轉換爲字符串,而無需額外的空格和了preg_replace,我終於得到它的工作使用mb_convert_encoding

mb_convert_encoding(pack('H*', $hexstring), 'ASCII', 'UCS-2');