• ベストアンサー

reg_replace関数の使い方

reg_replace( "\n","<br>", $rec['body'] ); として、テキストエリア内の改行をhtmlタグの<br>に変換して、 他のページに送って表示させたいのですが、 改行ではなく、半角スペースが入ってしまいます。 原因が判らず困っております。 お詳しい方がおられましたら教えてください。 よろしくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

macとかいうオチでしょうか? preg_replace( "/\r\n|\n|\r/","<br>", $test[0] ); でどうでしょう?

その他の回答 (1)

  • seit
  • ベストアンサー率0% (0/1)
回答No.1

nl2br($rec['body']) とか使うとできませんですかねぇ?

関連するQ&A

  • eregi_replace(

     掲示板を作成しており、 $comment = eregi_replace("\n","<br>",$comment); ($commentには、フォームから送信された本文を格納) で改行を<br>に置換しようとしたのですが、改行+<br>になってしまいます。改善方法がわからないのですが、どなたかわかる方いらっしゃいましたら、教えていただけないでしょうか。

    • ベストアンサー
    • PHP
  • preg_replaceがうまくできない

    <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に変換するにはどうすればいいでしょうか。

    • ベストアンサー
    • PHP
  • 改行コードの<BR>への変換がうまくいきません。

    はじめまして よろしくお願いします。 仕事でPHPを触れはじめたところです。 textarea タグで入力されたものをMysqlに保管し、 また表示するというようなものを作ろうとしています。 困っているのは Mysqlがどうのではなくその登録前に 改行コードを <br>タグ に変換をかけておこうというところで躓いています。 セッションを開始しておいてFormタグからの値を 次のページで受け取っています。 ここの過去ログ等を参考にしてみたのですが... $_SESSION['e_biko'] = htmlspecialchars($_POST['biko'] , ENT_QUOTES) ; $tmp_biko = ""; $tmp_biko = str_replace("\r\n", "\r", $_SESSION['e_biko']); $tmp_biko = str_replace("\r", "\n", $tmp_biko); $_SESSION['e_biko'] = str_replace("\n", "<br>", $tmp_biko); このあとでechoを使って$_SESSION['e_biko'] を表示させています。 しかし改行しないんです。<BR>タグへの変換ができておらず、表示されたHTMLのソースコードを見ると改行コードがそのまま出力されています。 HTML及びPHPの文字コードはEUCで記述しています。 開発及び確認はWindows・IE6で行っています。 何か考えられる原因、あるいはバグかあるでしょうか? ちなみに下記でも駄目でした。 $_SESSION['e_biko'] = preg_replace("/\r\n|\r|\n/", "<br>", $_SESSION['e_biko']); お分かりになられる方おられましたらよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • html上で改行するとスペースが空く現象

    <p> あああ いいい </p> とhtmlに書くとブラウザでは『あああ(半角スペース)いいい』となります。 改行を入れなければ問題ないのですがあまりにもテキストが長い場合など可読性を 考慮すると改行を入れたくなります。 bodyにwhite-space: nowrap;を指定すると<br />も無視されてしまうので困っているのですが 半角スペースをなくするにはどのように対処すればいいでしょうか?

    • ベストアンサー
    • HTML
  • <br>タグを改行に変えたい

    掲示板を作っています。 テキストファイルに書き込んである文字列ですが、改行は<BR>に変換して保存します。 編集で呼び出すときに、<BR>をもとの改行コードに戻す作業を試みています。 $message =~ s/<br>/\n/ig; とやるとテキストエリアがすべて空白です。 $message =~ s/<br/\n/ig; と>をなくすと改行されてテキストエリアに表示されます。 ただ、データには>が残ったまま表示されます。 この対処法を教えてください。

    • ベストアンサー
    • Perl
  • preg_replace, ereg_replace

    $bodyにはテキストファイルなどから読み込んだ、$dateと言う文字(変数ではない)と、改行を含む文字列。 それで、「$date」を、phpスクリプト上の$dateの値に置換したく、 $tmp = preg_replace("/\$date/s", $date, $body); または、 $tmp = ereg_replace("\$date",$date,$body); としたのですが、どうも置換されません。何がいけないのでしょうか?

    • ベストアンサー
    • PHP
  • DBから出力の際preg_replace等が効かぬ

    データベースを使ったウェブサイト。 POSTを使ったformタグより、textareaにてテキストをsql文にて、 MySqlにinsertし、(このときにmysql_real_escape_string) 読み出すときにhtmlspecialcharsしてprint。 これが一般的な流れなのですが、 上記のまま行うと、改行(\r\n)がウェブ上に見えてしまいます。 ですので、 1:print preg_replace("/\r\n/","<br />", htmlspecialchars($ans['Pt_txt1'], ENT_QUOTES, 'UTF-8')); 2:print nl2br(htmlspecialchars($ans['Pt_txt1'], ENT_QUOTES, 'UTF-8')); などをやって消そうとしているのですが消えません。 ためしに、 $aaa ="適当な文字"; 1:print preg_replace("/\r\n/","<br />", htmlspecialchars($aaa, ENT_QUOTES, 'UTF-8')); 2:print nl2br(htmlspecialchars($aaa, ENT_QUOTES, 'UTF-8')); のように、MySqlを介さずに直接出力した場合、 ちゃんと改行コードは<br />に変更してくれましたので ソースの記述ミスではないと思うのです。 原因はなににあるでしょうか。 なお、現状phpmyadminで覗くと、 「フィールドA」(mysql_real_escape_stringを通してinsert) ----- あいうえお\r\nかきくけこ ----- 「フィールドB」(mysql_real_escape_stringを通さずにinsert) ----- さしすせそ たちつてと ----- となっているフィールドがありますが、 それらがhtmlで出力されたもののソースを見ると、 ----- A:あいうえお\r\nかきくけこ B:さしすせそ<br />たちつてと となぜかBのほうが希望通りの動きをします。 cを通さずにDBに入れてしまったほうが希望通りに動きます。 さっぱり困りました。

    • ベストアンサー
    • MySQL
  • 正規表現でpreg_系を使ってタグ内は置き換えないようにする方法

    正規表現でpreg_系を使って、半角スペースを&nbsp;に置き換える処理をしたのですが、タグ内のスペースも&nbs;に置き換わってしましました。 タグ内は置き換えないようにするにはどのようにしたら良いでしょうか? データは複数行渡っています。以下はタグが置き換わるので、逆にタグでないものを置き換えたいです。 <?php function test_call($matches){ return str_replace(" ","&nbsp;",$matches[0]); } $data = <<< EOT この横は変換 します。 <a href="http://www.yahoo.co.jp/" target="_blank">タグの半角スペースは変換せず、 この横は変換する。 </a> このタグも変換してはいけません。< br/> EOT; $data = preg_replace_callback('/<("[^"]*"|\'[^\']*\'|[^>])*>[ ]?/', "test_call", $data); var_dump($data); ?>

    • ベストアンサー
    • PHP
  • dreamweaver タグの設定変更の仕方

    dreamweaverCS3を使用して、ホームページを制作しているのですが、 ひとつ困っている事があります。 ドキュメントのデザイン画面でのタグの自動変換の際、 改行の</br>が自動変換で→</br >という風に 半角スペースが入ってタグが変換されてしまいます。 環境設定で変更できるのかと思い色々調べたのですが、 わかりませんでした… ご存知の方がいらっしゃればぜひ教えて欲しいと思います。 よろしくお願いいたします。

  • 空白と改行の区分

    改行ではなく半角スペースと全角スペースだけを■に変換したくて $FORM{'body'} =~ s/\s/■/g; $FORM{'body'} =~ s/\x81\x40/■/g; としたのですが、これによって改行も■に変換されてしまいます。 改行ではなく全角および半角スペースだけを■に置換することは不可能でしょうか?

    • ベストアンサー
    • Perl

専門家に質問してみよう