如何从字符串末尾删除ETX字符(0x03)?我要么喜欢一个函数,否则我可以写一个正则表达式,我想知道的是如何在正则表达式中匹配ETX字符? trim()
不起作用。
答案 0 :(得分:8)
为了完成Charles的回答,我遇到了一个ETX字符不在行尾的情况,所以我不得不使用以下代码:
$string = preg_replace('/\x03/', '', $string);
只需删除$ sign。
答案 1 :(得分:2)
您是否尝试过rtrim功能
答案 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);