如何从字符串末尾删除ETX字符? (正则表达式或PHP)

时间:2011-09-27 01:12:42

标签: php regex ascii special-characters control-characters

如何从字符串末尾删除ETX字符(0x03)?我要么喜欢一个函数,否则我可以写一个正则表达式,我想知道的是如何在正则表达式中匹配ETX字符? trim()不起作用。

4 个答案:

答案 0 :(得分:8)

为了完成Charles的回答,我遇到了一个ETX字符不在行尾的情况,所以我不得不使用以下代码:

$string = preg_replace('/\x03/', '', $string);

只需删除$ sign。

答案 1 :(得分:2)

您是否尝试过rtrim功能

http://php.net/manual/en/function.rtrim.php

答案 2 :(得分:1)

ETX是一个控制角色,这意味着我们必须经过一些额外的努力来实现它。

从PHP交互式提示符:

php > $borked = "Hello, have an ETX:" . chr(3);
php > print_r($borked);
Hello, have an ETX:
php > var_export($borked);
'Hello, have an ETX:'
php > echo urlencode($borked);
Hello%2C+have+an+ETX%3A%03
php > var_dump( preg_match('/' . chr(3) . '/', $borked) );
int(1)
php > var_dump( preg_match('/' . chr(3) . '$/', $borked) );
int(1)
php > echo urlencode( preg_replace('/' . chr(3) . '$/', '', $borked) );
Hello%2C+have+an+ETX%3A

换句话说,你基本上只需将字符注入正则表达式字符串即可。现在,这个可能适得其反。这种技术可能会基于角色集和其他可怕的事情适得其反。

除了chr(3)之外,您还可以尝试urldecode('%03')来制作角色。您还可以使用PCRE syntax pages/\x03$/

中列出的特殊转义语法

这是一个功能,使用最后一个方法:

function strip_etx_at_end_of_string($string) {
    return preg_replace('/\x03$/', '', $string);
}

答案 3 :(得分:0)

猜测rtrim($ var,“\ c”);或preg_replace(“/ \ c + \ $ /”,'',$ var);