電子書籍の厳選無料作品が豊富!

宜しくお願いします。
PHPで文字列の置き換えをする関数の『ereg_replace』についてですが、この関数を使う変数に『'』がはいると、置き換え後にその『'』の前に『\』が付いちゃうんですが、これを回避する方法は無いでしょうか?ちなみに、文字化けするソースを明記させて頂きます。

$title_edit = ereg_replace("/\x0D\x0A|\x0D|\x0A/","<br>","${title}");

入力フォームでtextareaで入力された項目が$titleに入るのですが、textarea内でエンター改行した場合に、その改行コードをHTML上の<BR>タグに置き換えるというものなんですが、これを行うと、『'』の前に『\』が入ってしまうのです。原因が良く判らないで困っています。
お願いします!教えて下さい!!

A 回答 (2件)

こんにちは。


まず、正しく動作していますか?
$title_edit = ereg_replace("/\x0D\x0A|\x0D|\x0A/","<br>","${title}");
の部分ですが、
$title_edit = ereg_replace("\x0D\x0A|\x0D|\x0A","<br>","${title}");
になると思いますよ。

ちなみに、私の環境では正常に動作しました。文字コードを色々変えてみても正常でした。

以下のようにやってみてください。

//改行をタグへ
$title_edit = ereg_replace("\x0D\x0A|\x0D|\x0A","<br>","${title}");
//不要な「\」を除去
$title_edit = stripslashes($title_edit);

※一応私の場合は、「'」を全角の「’」や「&#039」に変更しています。

あと、文字コードでなくて「\r\n」や「\n」で動作しますよ。
$title_edit = ereg_replace("\r|\r\n|\n","<br>","${title}");

以下の感じでも試してみてください。
$title_edit = str_replace("\n", '<BR>', ${title});

ご質問のような感じでやるなら
$title_edit = preg_replace("/\x0D\x0A|\x0D|\x0A/","<br>","${title}");
ereg_replaceより高速です。
    • good
    • 0
この回答へのお礼

ありがとうございます!
一応、動作はしております。
教えて頂いたとおりやったら、ばっちり取れました!
stripslashes($title_edit);
が効いた様です!
助かりました-!!ありがとうございますーm(__)m

お礼日時:2005/03/29 09:18

php.iniで


magic_quotes_gpc
が On になっていると、
「'」「"」「(NULL)」に『\』がつきます。
参考URLの「magic_quotes_gpc」の説明の処を読んで下さい。
ここをOffにするか
#1で示されているように「stripslashes関数」を使って取り除きます

参考URL:http://jp2.php.net/manual/ja/ref.info.php#ini.ma …
    • good
    • 0
この回答へのお礼

ありがとうございます!
phpinfo()で調べたらmagic_quotes_gpcがONになっていました。
一つ一つ『\』が出そうな変数をstripslashes関数で\を取り除きます。
ありがとうございましたーm(__)m

お礼日時:2005/03/29 09:22

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