2012-10-18 30 views
0

我想从字符串变量中删除一个出现在空格之间的字符,我使用了一些PHP函数来执行它,如str_replace,但没有任何反应。如何删除字符“ ”在PHP字符串变量

下面的例子中,我告诉它通过PHP的var_dump功能:

string '�I�N�S�E�R�T� �[�d�b�o�]� 

如果有人能告诉我一个办法做到这一点,我会很感激。

+4

您需要正确处理的编码:什么每个程序员绝对,肯定需要知道编码和字符集进行工作,文字](http://kunststube.net/encoding/) – deceze

+0

了解这^并阅读使用正则表达式删除字符。这里是一个堆栈溢出链接:http://stackoverflow.com/questions/5011640/stripping-out-characters-that-arent-a-za-z0-9-and-from-php-strings – WozzeC

回答

1

你可以尝试:

$str = '�I�N�S�E�R�T� �[�d�b�o�]�'; 
$filtered_str = filter_var($str, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH) 

Demo。请参阅:filter-varfilter.filters.sanitize

+0

非常感谢,有帮助...正是我所需要的 – oletob

+1

@evolquez可能*不*完全符合您的需求。如果您正确地对待编码(当然,除非明确插入),否则您应该永远不要在您的文本中开始使用Unicode替换字符 。 – deceze

+0

@xylar问题是我没有使用任何Unicode字符,我只看到与变量不一致,并决定使用函数var_dump打印它,并看到每个包含空格的字符。 – oletob

2

这是一个简单的字符串变换操作(Demo):

$string = '�I�N�S�E�R�T� �[�d�b�o�]�'; 
echo strtr($string, array('�' => '')); 

输出:

INSERT [dbo] 

但是你可能有问题,实际上不知道该字符,然后将需要你先正确获取字符串。因此,在后来取代它只会是错误的地方。

+0

看起来很简单,但如果你分配句子strtr($ string,array(' '=>''));到一个变量,他们通过var_dump打印变量,你会看到什么问题。 – oletob

+0

@evolquez:看到这里,有一个变量和var_dump:http://codepad.org/j8iEVkZ2 – hakre

+0

我用函数filter_var解决了它:$ str =' I N S E R T [ DBO]'; $ filtered_str = filter_var($ str,FILTER_SANITIZE_STRING,FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH)...无论如何感谢 – oletob