[PHP] preg_replaceでタブをエスケープしたもの「\\t」を空白に置換したいのですが、

うまく正規表現がくみたてられずにいます。どうすればよいのでしょうか?
当然ながらタブ「\t」はそのままで置換対象外としたいのです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/07/07 16:35:19
  • 終了:2009/07/08 02:27:08

回答(4件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/07/07 18:33:07

ポイント23pt
  • "\\t" を1つの半角スペースに置換する。
  • "\t" は置換しない。

という要件でよければ、下記のスクリプトを参考にしてください。

$sour = "AAABBB\tCCC\t\tDDD\\\\t\\\\tEEE\t\\\\tFFF";
$dest = preg_replace("/(\\\).t/u", " ", $sour);
echo "SOUR=" . $sour . "\n";
echo "DEST=" . $dest . "\n";

参考サイト

id:kn1967a No.2

kn1967a回答回数356ベストアンサー獲得回数72009/07/07 19:05:20

ポイント23pt

これで十分

str_replace("\\\\t", " ", $str);

http://q.hatena.ne.jp

id:sphire No.3

sphire回答回数115ベストアンサー獲得回数122009/07/07 21:00:05

ポイント22pt

それはひょっとして strtr() とか str_replace() を使うべきではないでしょうか。

なんでもかんでも正規表現を使う必要はないのですよ。頭と道具は使い分けです。

http://jp2.php.net/strtr

$result = strtr($source, array('\\\\t', ' '));

http://jp2.php.net/str_replace

$result = str_replace('\\\\t', ' ', $source);

「preg_replaceで」という指定に反しているのでポイントは結構です。

id:y-kawaz No.4

y-kawaz回答回数1419ベストアンサー獲得回数2252009/07/07 22:11:43

ポイント22pt
<?php
//正規表現で書きたいならコレ
$str = preg_replace('/\\\\t/', ' ', $str);

//str_replaceの方が早いと思います
$str = str_replace("\\\\t", ' ', $str);

//\を文字として扱いたいならダブルクオートよりシングルクオートの方が楽です
$str = str_replace('\\t', ' ', $str);
?>

http://q.hatena.ne.jp/answer

  • id:piro_yamagoo
    どうもみなさまさまざまなご回答ありがとうございました。
    たしかにstr_replaceで十分ですね

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません