Grz*_*orz 11 php special-characters htmlspecialchars
假设我有一个刺痛,"a s d d"并将htmlentities其变成
"a s d d".
如何替换(使用preg_replace)而不将其编码为实体?
我试过了preg_replace('/[\xa0]/', '', $string);,但它不起作用.我正试图从我的字符串中删除那些特殊字符,因为我不需要它们
regexp之外的可能性有哪些?
编辑我要解析的字符串:http://pastebin.com/raw/7eNT9sZr
以及preg_replace('/[\r\n]+/', "[##]", $text)
稍后的功能implode("</p><p>", explode("[##]", $text))
我的问题并不完全是"如何"这样做(因为我可以编码实体,删除我不需要的实体和解码实体).但是如何删除只有str_replace或preg_replace的那些.
Daw*_*žan 25
问题是您以错误的方式指定不可破坏的UTF-8空间.正确的代码是0xc2a0,你只指定字符代码的一半.
您可以使用简单(快速)str_replace或使用更灵活的正则表达式替换它,具体取决于您的需要:
// faster solution
$regular_spaces = str_replace("\xc2\xa0", ' ', $original_string);
// more flexible solution
$regular_spaces = preg_replace('/\xc2\xa0/', ' ', $original_string);
Run Code Online (Sandbox Code Playgroud)
请注意,如果是str_replace,则必须使用双引号(")来包含搜索字符串,因为它不了解原始字符代码,因此需要先将这些代码转换为实际字符.这是由PHP自动生成的,因为正在处理用引号括起来\n的字符串,并且在使用字符串值之前替换特殊序列(例如换行符,字符代码等).
相比之下,preg_replace函数本身可以理解原始字符代码,因此您不需要PHP将代码转换为实际字符,您可以使用撇号(单引号')来封装搜索字符串.
请注意UTF-8字符代码如何指定为两个单独的数字.
清理所有类型的空白区域。
preg_replace("/\s+/u", " ", $str);
Run Code Online (Sandbox Code Playgroud)
仅供参考,PHP Sanitization filter_var()没有关于这些空白的过滤器。
| 归档时间: |
|
| 查看次数: |
9195 次 |
| 最近记录: |