[PHP-users 10420] コントロールコードを除去するには

Osamu Shigematsu php-users@php.gr.jp
Mon, 30 Sep 2002 12:39:28 +0900


重松です。こんにちは。

FORM などで渡されてきたデータにコントロールコードが含まれる場合、
それらを取り除きたいと考えています。

そこで、以下のようなスクリプトを書き、実行してみたのですが、
期待の動作になりません。

テスト環境は、
PHP Version 4.2.0
Darwin jhfacpc17.jhfacc 5.4 Darwin Kernel Version 5.4: Wed Apr 10 09:27:47 
PDT 2002;
root:xnu/xnu-201.19.3.obj~1/RELEASE_PPC Power Macintosh powerpc
'./configure' '--enable-mbstring' '--enable-mbregex' 
'--enable-mbstr-enc-trans'
'--enable-trans-sid' '--enable-force-cgi-redirect' '--enable-ftp'
です。

正規表現の書式に何か誤りがあるのではないかと思うのですが、
文字列クラスの書式はこれで正しいのでしょうか?

また、POSIX 互換のもの (ereg) は、バイナリセーフではないので、
Perl 互換のものを使うのが望ましいと記述がありますが、
Ruby  互換のもの (mb_ereg) はバイナリセーフなのでしょうか?

アドバイスをいただければ幸いです。

<?php
$a = "Hello, \nWorld!";
$a = mb_ereg_replace('[:cntrl:]','_',$a);
print $a;
?>

[localhost:~] shige% php -q regex | hexdump -C
00000000  48 65 5f 5f 6f 2c 20 0a  57 6f 5f 5f 64 21        |He__o, .Wo__d!
|
0000000e

--
Osamu Shigematsu
mailto:shige@ravi.ne.jp