从phpstring中删除控制字符
似乎微不足道,但给我一个困难时间:
有没有人有一个关于如何从PHPstring中删除像STX控制字符的提示。 我玩过
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
但发现它消除了很多的办法。 有没有办法只删除控制字符?
TIA
ķ
如果你的意思是控制字符的前32个ASCII字符和\x7F
(包括回车等),那么这将工作:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
(注意单引号:用双引号\x00
会导致一个分析错误,不知何故。)
换行符和回车符(通常写成\r
和\n
)可以像下面这样保存:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
我必须说,我认为鲍比的答案是更好的,因为[:cntrl:]
更好地expression了代码的作用,而不是[\x00-\x1F\x7F]
。 所以,使用ereg_replace
而不是preg_replace
:
警告: ereg_replace
在PHP> = 5.3.0中被弃用,并且在PHP> = 7.0.0中被删除!
ereg_replace('[:cntrl:]', '', $input);
对于Unicodeinput,这将从您的input文本中删除所有控制字符,未分配,私人使用,格式和替代代码点(也不是空格字符,如制表符,新行)。 我使用这个从我的input中删除所有不可打印的字符。
<?php $clean = preg_replace('/[^\PC\s]/u', '', $input);
有关\p{C}
更多信息,请参阅http://www.regular-expressions.info/unicode.html#category
PHP不支持POSIX-Classes,所以你可以使用[:cntrl:]
来代替一些奇特的字符 – magic-stuff:
ereg_replace("[:cntrl:]", "", $pString);
编辑:
5.3中可能需要额外的一对方括号。
ereg_replace("[[:cntrl:]]", "", $pString);
为了保持控制字符,但使他们兼容的JSON,我不得不
$str = preg_replace( array( '/\x00/', '/\x01/', '/\x02/', '/\x03/', '/\x04/', '/\x05/', '/\x06/', '/\x07/', '/\x08/', '/\x09/', '/\x0A/', '/\x0B/','/\x0C/','/\x0D/', '/\x0E/', '/\x0F/', '/\x10/', '/\x11/', '/\x12/','/\x13/','/\x14/','/\x15/', '/\x16/', '/\x17/', '/\x18/', '/\x19/','/\x1A/','/\x1B/','/\x1C/','/\x1D/', '/\x1E/', '/\x1F/' ), array( "\u0000", "\u0001", "\u0002", "\u0003", "\u0004", "\u0005", "\u0006", "\u0007", "\u0008", "\u0009", "\u000A", "\u000B", "\u000C", "\u000D", "\u000E", "\u000F", "\u0010", "\u0011", "\u0012", "\u0013", "\u0014", "\u0015", "\u0016", "\u0017", "\u0018", "\u0019", "\u001A", "\u001B", "\u001C", "\u001D", "\u001E", "\u001F" ), $str );
(JSON规则的状态:“除了必须转义的字符:引号,反转斜体和控制字符(U + 0000到U + 001F)外,所有Unicode字符都可以放在引号内。
正则expression式的自由方法
如果你只是把我熟悉的控制angular色(32和127以下的那些控制angular色),试试看:
for($control = 0; $control < 32; $control++) { $pString = str_replace(chr($control), "", $pString; } $pString = str_replace(chr(127), "", $pString;
循环删除了除DEL之外的所有内容,我们只是将其添加到最后。
我认为这会减轻你的压力,然后处理正则expression式和正则expression式库。