ユーザにHTMLの知識がなく、オリジナルのタグを入力させることによって
HTMLタグに置換をするということをPHPで実現したく思っています。
<@hoge@@こちら@> とtextareaに入力したものを
<a href="hoge.html">こちら</a> という形にしたいのです。
ereg("<@([^@@]*)@@([^@>]*)@>",$string,$regs);で「hoge」と「こちら」を
取得することはできますが、オリジナルタグが1行に複数ある
(例:<@hoge1@@こちら1@>、<@hoge2@@こちら2@>)場合、ereg関数で
取得しようとしても最初の「hoge1」と「こちら1」しか取得できません。
これを <a href="hoge1.html>こちら1</a>、<a href="hoge2.html">こちら2</a> と置換するにはどのようにしたらよろしいでしょうか?
使っている関数が間違っているのか、関数の使い方を間違っているのか
わかりません。
どなたかお分かりになる方いましたらヒントだけでも結構ですので
教えていただけませんでしょうか。
環境はphp4.1.0です。mbregexはインストールしています。
お手数ですが、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
正規表現の特徴であるGreedyMatch(貪欲なマッチ)のためです。
確かperlではlazyMatch(ものぐさなマッチ)と呼ばれる最短マッチ用のOperatorがあった筈なのでpreg系関数でものぐさマッチ用に構文を書けばヒットすると思います。
詳細はこのあたりを参照してください
http://www.ultraman.gr.jp/~momiyama/Learning_Per …
まじめにこの手の作業をしようとすると構文解析する必要があるでしょう。
phpの中で構文解析するのもどうかと思いますが・・・
本格的にやるんだったらjavaやCでコンパイラコンパイラやyacc、lexなどで検索すればヒントになる事柄が見つかると思います。
早速のご回答ありがとうございます。
>確かperlではlazyMatch(ものぐさなマッチ)と呼ばれる最短マッチ用のOperatorがあった筈なのでpreg系関数でものぐさマッチ用に構文を書けばヒットすると思います。
早速試してみます。
>まじめにこの手の作業をしようとすると構文解析する必要があるでしょう。
わかりました。もう少し勉強する必要がありそうです。。。頑張ってみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS HTMLタグのあるCSVファイルを利用する方法 4 2023/03/19 14:41
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP MySql ページング 2 2022/09/20 06:38
- WordPress(ワードプレス) ワードプレスで、投稿一覧ページにタグを表示する方法 投稿につけたタグを、記事一覧ページにもカテゴリと 1 2023/05/10 21:41
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP タグの追加 1 2022/08/19 11:25
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSFタグのfタグとは
-
reuterの記事をbeautiful.soup....
-
htmlspecialchars関数を使いな...
-
★PHP★フォーム登録時にタグを読...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
データベースから取り出したテ...
-
改行について
-
エクセルのCOUNTIFが正しくカウ...
-
ファイルから読み取った改行文...
-
VBScriptである文字列に半角文...
-
メッセージボックスで1025文字...
-
半角記号、全角記号を含む正規...
-
Excel関数「COUNTIF」で”文字”...
-
数値をASCII文字にする方法につ...
-
文字の入力で横バー上段、中断...
-
COBOLの改行
-
文字列の置換をCStringで(C++)
-
Excel2002 一桁数字だけ全角に置換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
reuterの記事をbeautiful.soup....
-
正規表現で複数行に渡る範囲を...
-
変数にHTMLを代入する場合
-
javascriptの正規表現でhtmlか...
-
タグにはさまれている文字以外...
-
VBSでのhtmlタグ要素名の置換
-
objective-cでのHTMLタグ表示に...
-
phpの正規表現でstyle="●●"を削...
-
Strutsでリンクを動的に生成したい
-
PHPスクレイピングが上手くいき...
-
htmlのソースからテーブルの値...
-
JSFタグのfタグとは
-
ASP.NET(C#)とhtmlの#include
-
あるタグから対応するタグまで...
-
preg_replaceでの正規表現によ...
-
eclipseより、タスク・タグの使...
-
HTMLファイルの書き換え
-
Nvuで作成したhtmlをコピペして...
-
htmlタグ間の特定文字置換
-
[正規表現][入れ子]ネストされ...
おすすめ情報