OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

オリジナルタグをHTMLタグに置換する方法

  • すぐに回答を!
  • 質問No.198536
  • 閲覧数248
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 66% (8/12)

ユーザに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はインストールしています。

お手数ですが、よろしくお願いいたします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル11

ベストアンサー率 58% (114/195)

正規表現の特徴であるGreedyMatch(貪欲なマッチ)のためです。
確かperlではlazyMatch(ものぐさなマッチ)と呼ばれる最短マッチ用のOperatorがあった筈なのでpreg系関数でものぐさマッチ用に構文を書けばヒットすると思います。

詳細はこのあたりを参照してください
http://www.ultraman.gr.jp/~momiyama/Learning_Perl/regular.htm

まじめにこの手の作業をしようとすると構文解析する必要があるでしょう。
phpの中で構文解析するのもどうかと思いますが・・・
本格的にやるんだったらjavaやCでコンパイラコンパイラやyacc、lexなどで検索すればヒントになる事柄が見つかると思います。
お礼コメント
polco2001

お礼率 66% (8/12)

早速のご回答ありがとうございます。

>確かperlではlazyMatch(ものぐさなマッチ)と呼ばれる最短マッチ用のOperatorがあった筈なのでpreg系関数でものぐさマッチ用に構文を書けばヒットすると思います。

早速試してみます。

>まじめにこの手の作業をしようとすると構文解析する必要があるでしょう。

わかりました。もう少し勉強する必要がありそうです。。。頑張ってみます。

ありがとうございました。
投稿日時 - 2002-01-15 08:57:48
-PR-
-PR-
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ