ユーザに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ランキング
-
htmlのソースからテーブルの値...
-
phpの正規表現でstyle="●●"を削...
-
JSFタグのfタグとは
-
[php][正規表現]タグ以外を削除...
-
変数にHTMLを代入する場合
-
PHP Webページのタイトルを取得...
-
reuterの記事をbeautiful.soup....
-
REGEXREPLACE関数について、
-
VBAのコマンドボタンの文字列の...
-
エスケープ文字の復帰(¥r)と...
-
C++で空Enterの入力を判...
-
テキストボックス行の桁数を制...
-
ダブルコーテーション(
-
ソースコードの1行が長いとき...
-
数値をASCII文字にする方法につ...
-
改行コードについて
-
文字の入力で横バー上段、中断...
-
全角括弧と全角読点の間隔を狭...
-
C言語の標準入力で改行しない方法
-
PHPの¥
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
reuterの記事をbeautiful.soup....
-
変数にHTMLを代入する場合
-
Nvuで作成したhtmlをコピペして...
-
srcに「banner.」で始まるファ...
-
[php][正規表現]タグ以外を削除...
-
PHPの正規表現でHTMLタグの内容...
-
htmlでflashを開く、画面サイズ...
-
csobjというタグについて
-
正規表現でHTMLタグの属性まで...
-
正規表現でタグの置換をしたい...
-
HTMLファイルの書き換え
-
★PHP★フォーム登録時にタグを読...
-
PHP4→5にアップグレードしたら...
-
オリジナルタグをHTMLタグに置...
-
print "<img src=\\"0.jpg\\/>\...
-
Strutsでリンクを動的に生成したい
-
正規表現で複数行に渡る範囲を...
-
PHP Webページのタイトルを取得...
-
リッチテキストエディターでの...
-
MP3のコメントタグやSYLTの詳細
おすすめ情報