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

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

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

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

2回答

1755閲覧

以下の事は正規表現での置換のみで出来ますか?

harukitchen

総合スコア34

PHP

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2016/02/22 08:28

編集2016/02/22 08:41

-リストを
-作成します

と記入されている箇所を、

<ul><li>リストを</li><li>作成します</li></ul>

というように置き換えをしたいと思っています。
これは正規表現での置換のみで可能ですか?
可能な場合はどのようなコードで出来るか教えていただけますか?
複数回に渡っても構いません。

liタグでくくるだけなら以下のように出来たのですが、ulでくくるところで悩んでいます。
PHPで作っています。

// liを付与
$content = preg_replace("/^-(.*?)\n/m","<li>$1</li>", $content );

よろしくお願いします。

追記

変数のcontentには他にも文字列が含まれております。
例えば、

あいうえお
かきくけこ
-リストを
-作成します
さしすせそ

というような内容です。
また、-ならulタグ、+ならolタグにしたいと考えています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんな感じですか。

php

1<?php 2 3$content = "くだもの\n" 4 . "-りんご\n" 5 . "-いちご\n" 6 . "野菜\n" 7 . "-きゅうり\n" 8 . "-とまと\n" 9 . "おわり\n"; 10 11$content = preg_replace_callback("/((^-(.+)\\n)+)/m", function($m) { 12 return "<ul>\n".preg_replace("/^-(.+)$/m", " <li>$1</li>", $m[1])."</ul>\n"; 13}, $content); 14 15echo $content; 16// end of file
[takeyuki@localhost gas-minus-minus]$ php work/b.php くだもの <ul> <li>りんご</li> <li>いちご</li> </ul> 野菜 <ul> <li>きゅうり</li> <li>とまと</li> </ul> おわり [takeyuki@localhost gas-minus-minus]$ php -v PHP 5.4.16 (cli) (built: Jun 23 2015 21:17:27) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

投稿2016/02/22 08:59

unau

総合スコア2468

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

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

harukitchen

2016/02/22 09:31

ありがとうございます! 確認したところ動作もバッチリです! なるほど、preg_replace_callbackを使用してするのですね。勉強してみます。 素晴らしいコードをありがとうございます!
guest

0

PHP

1$content = '<ul>'.preg_replace("/^-(.*?)\n/m","<li>$1</li>", $content ).'</ul>';

これじゃだめですか?

投稿2016/02/22 08:34

shi_ue

総合スコア4437

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

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

harukitchen

2016/02/22 08:38

情報が足りずすみません。contentには他にも文字列が含まれている状態で、特定の部分だけ置き換えをしたいと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問