dポイントプレゼントキャンペーン実施中!

<br />を\nに置き換えてやりたいと思っています。

$a = preg_replace("<br\s/>", "\n", $a);
としたのですが、

変換前が
あ<br />い

変換後が
あ<
>い

となりました。
<>が括っているものとしてとられているようでしたので、次のように\でエスケープしてみました。
$a = preg_replace("\<br\s/\>", "\n", $a);
そうしたら変換後は何も出てきませんでした。(データがなかった)

そこで
$a = preg_replace("/<br\s\/>/", "\n", $a);
としてみたのですが、変換前と変わりませんでした

\sを普通に半角スペースにもしてみましたし、括っているダブルクオーテーションをシングルクオーテーションに変えてもみましたが、結果は同じでした。

<br />全体を\nに変換するにはどうすればいいでしょうか。

A 回答 (2件)

preg処理をするときにはきちんとデリミターを指定しましょう



$pattern="/<br(\s+\/)?>/i";
$replacement="\n";
$html=preg_replace($pattern,$replacement,$html);
    • good
    • 0
この回答へのお礼

解決しました。
ありがとうございました。

お礼日時:2009/12/05 16:48

最後の


>$a = preg_replace("/<br\s\/>/", "\n", $a);
でいいです。どこかに勘違いがないか確認しましょう。

正規表現を使わないのなら、str_replaceを使ってもいいと思いますが。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
もう一度やってみたのですが、やっぱり変化ありません

$a = preg_replace("/br\s\//","\n",$a);
で試してみましたが、予想通り<や>が残った状態で変換されました。
どうしても<>を含めるとうまくいきません。

補足ですが、この変換元としている<br />は元々nl2br関数で変換したものなのですが、これが何か関係あるのでしょうか。

お礼日時:2009/12/05 14:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!