質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

4413閲覧

PHP <p>タグ内の改行コードだけを<br />タグに変換する方法を教えて下さい。

ucan-lab

総合スコア888

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2015/10/23 17:59

テキストデータの自動整形機能を実装したいと思っています。

ezyang/htmlpurifier
https://github.com/ezyang/htmlpurifier

上記のライブラリを使ってpタグを囲うようにしています。

ただ、<p>タグ内の改行コードは<br>タグに変換されず、pタグ内のテキストが1行で表示されてしまいます。

nl2br関数を使用すると余計な改行コードまで置換されてしまいます。
preg_replaceで変換させようと思うのですが、うまくいかず...

php

1 public function showAction(Post $post) 2 { 3 // テキストデータ 4 $postContent = $post->getPostContent(); 5 6 // HTML整形 7 $htmlPurifier = new \HTMLPurifier(); 8 $postContent = $htmlPurifier->purify($postContent); 9 10 // pタグ内の改行コードだけbrタグに変換する 11 preg_replace ( '/<p>(.+?)<\/p>/si' , '<p>'.nl2br("$1").'</p>' , $postContent ); 12 13 $post->setPostContent($postContent); 14 15 return array( 16 'entity' => $post 17 ); 18 }

preg_replaceではpタグ内の改行コードは置換してくれませんでした。
何か良い方法がありましたらご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

php

1 2$str = "(文章)\n(文章)"; 3 4$html = <<<HTM 5<!DOCTYPE HTML> 6<html lang="ja-JP"> 7<head> 8 <meta charset="UTF-8"> 9 <title></title> 10</head> 11<body> 12 <div>{$str}</div> 13 <p>{$str}</p> 14</body> 15</html> 16HTM; 17 18$res = preg_replace_callback('/<p>(.*)<\/p>/is' 19 , function($matches) { 20 return nl2br($matches[0]); 21} 22 , $html 23); 24 25var_dump($res); 26 27// string '<!DOCTYPE HTML> 28// <html lang="ja-JP"> 29// <head> 30// <meta charset="UTF-8"> 31// <title></title> 32// </head> 33// <body> 34// <div>(文章) 35// (文章)</div> 36// <p>(文章)<br /> 37// (文章)</p> 38// </body> 39// </html>' (length=192)

投稿2015/10/23 18:23

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ucan-lab

2015/10/24 00:30

解決しました!! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問