$str =
preg_replace('#([\x00-\x1F])#e', '"\x" . sprintf("%02x", ord("\1"))', $str);
0
A
回答
2
它将数字值替换为0到31之间(主要是控制字符和间距,除了实际空格字符之外)的序数值的每个字符。正则表达式的结尾处的e意味着“像对待PHP代码一样评估模式”,并允许在preg_replace中使用字符串连接和sprintf。正则表达式由#分隔,而不是更常见的/,在这种情况下没有理由(通常在正则表达式字符串中包含/时避免它们转义)。
例如:
<?php
$str = "\t 22 \n ducks";
$str = preg_replace('#([\x00-\x1F])#e', '"\x" . sprintf("%02x", ord("\1"))', $str);
echo $str;
?>
输出:
\x09 22 \x0a ducks
取出从模式e
,你会得到这样的:
"\x" . sprintf("%02x", ord(" ")) 22 "\x" . sprintf("%02x", ord(" ")) ducks
至少在这里。
1
更新:
我看着它密切,它看起来像它的将所有ASCII字符的的1-31范围内的十六进制相当于一个\x
前缀。我已经决定
我最初的直觉反应的猜测是不正确的:
看起来像它的URL编码。我可能会使用内置的php urlencode函数。
+1
从0到31,而不是1。 – 2009-09-15 17:02:14
相关问题
- 1. 这个正则表达式做什么?
- 2. 这个正则表达式做什么?
- 3. 这些在PHP正则表达式中做什么?
- 4. 这个正则表达式在做什么?
- 5. 这个正则表达式究竟做了什么?
- 6. 这个正则表达式在做什么?
- 7. 这个正则表达式究竟做了什么?
- 8. 这个正则表达式在做什么:new Regex(@“(?<!\\),”);
- 9. 如何做这个正则表达式?
- 10. 这个PHP正则表达式模式是什么意思?
- 11. “?=”在正则表达式中做什么?
- 12. 这个Perl正则表达式的PHP相当于什么?
- 13. 这个正则表达式的含义是什么(php)
- 14. 为什么我的正则表达式会这样做?
- 15. 这个PHP正则表达式有什么问题?
- 16. 这个PHP正则表达式是什么意思?
- 17. 这个正则表达式在PHP中意味着什么?
- 18. 为什么这个正则表达式在PHP中失败?
- 19. 这是什么正则表达式?
- 20. 这是什么正则表达式?
- 21. 这是什么javascript正则表达式?
- 22. 是什么,这些正则表达式
- 23. ,这是什么阵正则表达式
- 24. 我在做什么毛病我的PHP正则表达式
- 25. 这个正则表达式的mod_security规则是干什么的?
- 26. PHP拒绝这个正则表达式
- 27. 为什么这个正则表达式不排除这个词?
- 28. 这个正则表达式匹配什么/什么时候?
- 29. PHP,preg_match,正则表达式。我究竟做错了什么?
- 30. 这个替换正确的正则表达式是什么?
警告:标题包含破碎的英语:)请修复。 – 2009-09-15 17:01:28