question:1110179876
メタキャラクタ"\n","\r"について誤解してたので一部,追記・変更.
PHPの特徴は,公式・オンラインマニュアルがそこそこ充実してること.
一人目の人…なぜマニュアルをリンクしないんだろう.SAKさんとこは便利だけど,PHPに関しては詳細に欠けるし情報古め.
二人目の人…同様.リンク先の質はSAKさんところ未満.
三人目の人…
注意: Perl互換の正規表現構文を使用する preg_replace()は、しばしば ereg_replace()よりも速い代替関数です。
は無視?
質問者が速度を求めていないかもしれないし,リンク先に書いてあるから書くまでもないという判断?
そもそも,マニュアルを少し見たことある人やPHPを少し使ったことある人なら,
(正規表現んような)技巧的な置換ルールを必要としない場合、ereg_replace() または preg_replace()の替わりにこの関数を常用するべきです。
を知ってそうなもんだけど.
「タブを消したい」の要望前なら str_replace("\x0A",'',$string) ,「タブも消したい」に対しては
- str_replace("\x0A", '', str_replace("\x0D", '', str_replace("\x09", '', $string)))
- str_replace(array("\x0A","\x0D"), '',$string) :ちょっと速い(はず)
- preg_replace('#[\x09\x0A\x0D]#','',$string) :遅い(後述)
(入力元の改行コードが不明の場合)改行コードを得るなら,
$line = str_replace ( "\09",'', str_replace( ( (false === $iCR = strpos($string,"\x0D",0)) ? "\x0A" : ( ($string{$iCR + 1} === "\x0A") ? "\x0D\x0A" : "\x0D" ) ), '', $string) );