2011-09-27 7 views

答えて

8

をETX文字は行末にないので、次のコードを使用する必要がありました。

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

$記号を削除するだけです。

0

RTRIM機能を試してみました。またはpreg_replace( "/ \ c + \ $ /"、 ''、$ var);

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); 
} 
関連する問題