8

文字列の末尾から ETX 文字 (0x03) を削除するにはどうすればよいですか? 関数が欲しいのですが、それ以外の場合は正規表現を書くことができます。知りたいのは、正規表現で ETX 文字を一致させる方法だけですか? trim()動作しません。

4

4 に答える 4

8

Charles の回答を完了するには、ETX 文字が行末にない場合があったため、次のコードを使用する必要がありました。

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

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

于 2014-03-24T12:35:02.787 に答える
2

rtrim関数を試しましたか

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

于 2011-09-27T01:20:08.190 に答える
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)も挑戦できます。PCRE 構文ページurldecode('%03')にリストされているように、特別なエスケープ構文を使用することもできます。/\x03$/

最後のメソッドを使用した関数を次に示します。

function strip_etx_at_end_of_string($string) {
    return preg_replace('/\x03$/', '', $string);
}
于 2011-09-27T03:36:18.900 に答える
0

推測では、rtrim($ var、 "\ c"); またはpreg_replace( "/ \ c + \ $ /"、''、$ var);

于 2011-09-27T03:03:21.590 に答える