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

お手数ですが、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

正規表現の特徴であるGreedyMatch(貪欲なマッチ)のためです。


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

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

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

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

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

早速試してみます。

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

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

ありがとうございました。

お礼日時:2002/01/15 08:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q少人数でオリジナルTシャツをつくりたい。。

学園祭でオリジナルTシャツを作ろうと思うのですが、10枚以下なので一般的なところでは高い値段になってしまいます。

どなたか、枚数が少なくても安くオリジナルTシャツが作成できる業者をご存知ないですか?

Aベストアンサー

10枚以下ですか。
業者に依頼すれば版をつくるでしょうから、それなりのコストがかかりますよね...
出来栄えは劣りますが、PCとインクジェットプリンタを使えるのなら、
アイロンプリント用のシートが市販されてます。
これをTシャツに当ててアイロンで転写...でできますけどいかがでしょうね。

他には、「Tシャツくん」なる、個人向けの図版印刷機が市販されてましたが
今でもあるかどうか?

Q

PHP5(ZendFramework),テンプレートエンジンSmarty,Javascript(prototype.jsなどを使用)で記述されているソースコードの解析をしています。
コード中にリンク先で、下記のように指定されている箇所がありましたが、この中の # は何を意味するのでしょうか?

<a href = "192.168.1.1/index.php#cc&a=10">

久しぶりにWEB関連の開発に携わると、一昔前とは大変かわっていてソースコードを追うのも大変です。どうかよろしくお願いいたします

Aベストアンサー

#cc というのは、index.phpの出力に<a name="cc">という部分が含まれるはずで、ブラウザがその部分を画面の最上行に位置づけます。

&a=10は。。。?
index.php?cc&a=10 とか index.php#cc?a=10 とかでないとするとわかりません。

QオリジナルTシャツを1週間で

オリジナルTシャツを作ろうと思ったんですが日数がもうなく厳しそうです。

8月6日着でオリジナルTシャツを作れる所はないでしょうか??



枚数は30枚程です。。

Aベストアンサー

http://oshiete1.goo.ne.jp/qa5153808.html
で質問した者です
お蔭様でTシャツ速攻で間に合わせました
地元の業者を見つけてください
時節柄結構無理も聞いてくれると思います
直接相談して道筋を決めてください
例えばこんな要求が業者からあると思います
 (1)マークはどんなものか案を相談
   具体的にきちんと決めて持ち込んでください
   そこで、もう少しボリュームを減らしましょうとか
   刺繍は無理だからワッペンにしましょうとか
   印刷できそうですね
   とかプロの目ですぐにアドバイスもらえますよ
 (2)量販店でTシャツを購入してください
 (3)何日までに持ち込んでください
まずはチャレンジしてみましょう

Qで、post形式で渡したい

index.phpのformタグで、post形式でaaa.phpに送信したとします。
aaa.phpで表示した画面でたとえば
<a href='aaa.php?kategori=$_POST[kategori]&kazu=$_POST[kazu]'>テスト</a>
と出力するようにしたとすると、aaa.phpには「get」方式で渡されると思いますが、これをpost形式で渡すことはできるのでしょうか?

Aベストアンサー

すでに回答はでていますが、似たようなことならlabelをつかえます

<style>
label.anchor{
text-decoration:underline;
color:#0000ff;
}
</style>
<form action="aaa.php" method="post">
<label for="s" class="anchor">テスト</label>
<input type="text" name="kategori" value="xxx">
<input type="text" name="kazu" value="yyy">
<input type="submit" id="s">
</form>

Q☆オリジナルTシャツ☆

こんにちわ。
今度、団体(約30人くらい)でオリジナルのTシャツorパーカーを出来るだけ安く、かわいく作りたいと思っています!そこで、横浜市内にオリジナルTシャツのようなものを作れるお店を知ってる方がいらっしゃいましたら、ぜひ教えてください!よろしくお願いします!

Aベストアンサー

兵庫県北部の豊岡市でオリジナルTシャツプリントショップを知ってます。
コウノトリで有名な豊岡市でコウノトリTシャツを企画でエコTシャツ等のオリジナルウェアーを製作しておられます。
ウィンドブレーカーなどTシャツ用インクでプリントできない、ナイロン等の撥水加工布に印刷出来る確かな腕を持っておられます。
デザインの相談もして貰えるようですよ!
こんなお店で良ければ一度メールで尋ねてみてはいかがでしょう?

参考URL:http://www.magic-co.jp/

QPHPでHTMLの中から
を取り出したい

PHP 4.4.2 を使っています。

HTMLの中の <div class="main">~</div> で囲まれているテキストを取り出したいのですが、どのようにするのが良いでしょうか。

ファイルの先頭から順番に調べていくことも検討しましたが、<div>は入れ子になる可能性もあるので、それを考えたらわからなくなりました。

Aベストアンサー

 まぁ頑張って自前でパースするのが結局は一番良いんじゃないかな。他人が作ったルーチンは細かいところで要求した動きができない事もある。

 ところで、入れ子になった場合の動作は、君が決める事だ。
~~~~~
<div>現在div1の中です。</div>
<div>現在div2の中です。<div>入れ子2-1になりました</div>入れ子終わり</div>
~~~~~
 この状況で、div1は全く問題ないよね。<div>が現れてから</div>が現れるまでを機械的に抜き出せば良い。
 div2の場合にどうしたいか。だね。
1.div2を丸ごと取り、div2-1は無視(div2の本文中として扱う)
2.div2はdiv2として取り、div2-1も1つのdivとして別個に取る。
3.div2はdiv2として取り、div2-1は1つのdiv、さらに、div2はdiv2-1を省いたものとする。
 これは要求仕様なので、どうすればよいかではなくどうしたいかだ。どちらにせよ、<div>と</div>をカウントしてスタックに積んでおけば技術的に難しい事は何もない。

 まぁ頑張って自前でパースするのが結局は一番良いんじゃないかな。他人が作ったルーチンは細かいところで要求した動きができない事もある。

 ところで、入れ子になった場合の動作は、君が決める事だ。
~~~~~
<div>現在div1の中です。</div>
<div>現在div2の中です。<div>入れ子2-1になりました</div>入れ子終わり</div>
~~~~~
 この状況で、div1は全く問題ないよね。<div>が現れてから</div>が現れるまでを機械的に抜き出せば良い。
 div2の場合にどうしたいか。だね。
1.div2を丸ごと...続きを読む

QオリジナルのTシャツ

オリジナルのTシャツ(その他下着類)を作成&ネット販売したいと思っています。
そこで質問です。
(1)Tシャツにはオリジナルのイラストを入れようと思っていますが、もとになるTシャツはどのように仕入れたら良いでしょうか?できれば、タグも変更したいのですが。。(変更方法がありましたら教えてください。)
(2)もとになるTシャツのタグを変更できない場合、それにイラストをプリントして販売することは、法律上、問題ないでしょうか?

Aベストアンサー

1、大量に買うなら衣料関係の卸し屋さんに行ってください、電話帳でお近くのお店が調べられます。

 現金販売で数百枚単位となる事がほとんどなのでご注意を

2.タグって首の後のネーム?それとも値段とかが書いてある札?

 変更できますから、印刷屋さんに相談して、こんなデザインで作ってくださいと相談します、これも数十万円ぐらいから掛かりますのでそれなりのご用意を

自作のイラスト(自作でも何かを模した物でなければ)であれば、問題は無いですよ。

Qphpでが動かない

こんにちは、phpの設定について教えてください。

レンタルサーバ(xreaやロリポップ)で、
index.phpの中に<?= $hoge ?>というソースを埋め込んで、
$hogeの内容が反映されていたのですが、

この度、fedora core 12を入れたのですが、
ホームページのソースを見ると、内容が反映されず<?= $hoge ?>のままでです。
php.iniの設定が必要なのかわからないのですが、
ご存じの方いましたら、教えていただけないでしょうか。

また、
<?php
 phpinfo();
?>
はちゃんと動いてくれてます。

fedora12にインストールする手順は、
http://fedorasrv.com/apache.shtmlを参照しました。

[root@fedora ~]# yum -y install httpd
[root@fedora ~]# yum -y install php php-mbstring

もしかしたら、他にもインストールするものがあるのでしょうか?
よろしくお願い致します。

こんにちは、phpの設定について教えてください。

レンタルサーバ(xreaやロリポップ)で、
index.phpの中に<?= $hoge ?>というソースを埋め込んで、
$hogeの内容が反映されていたのですが、

この度、fedora core 12を入れたのですが、
ホームページのソースを見ると、内容が反映されず<?= $hoge ?>のままでです。
php.iniの設定が必要なのかわからないのですが、
ご存じの方いましたら、教えていただけないでしょうか。

また、
<?php
 phpinfo();
?>
はちゃんと動いてくれてます。

fedora12...続きを読む

Aベストアンサー

短縮型のタグが有効なのは、php.ini 設定ファイルのディレクティブ
short_open_tag が 有効になっている場合か PHP が --enable-short-tags
オプションつきで configure されている場合のみです。

http://www.php.net/manual/ja/language.basic-syntax.phpmode.php

QオリジナルTシャツについて

オリジナルTシャツを作りたいと思っているのですが、Tシャツ以外に版代というものが必要みたいなことが書いてあったのですが、これは必ず払わなければいけないのですか?また、何のためのお金なのですか?

Aベストアンサー

Tシャツの柄を作るためのハンコの様なものです。
店によってはTシャツ代金に含めている場合もあると思います。
少数であればTシャツ君と言う自分で作る機械もあります。

参考URL:http://taiyoseiki.com/scb/shop/shop.cgi?id=1&kid=1

Q ←コレでエコーさせる設定

XAMPPをインストールして
ローカルにテスト環境を構築しています。

<?=$hoge?>
本番環境ではこの書き方でエコー出来ているので
合わせたいです。

php.ini辺りの設定で有効にできるのでしょうか。

宜しくお願い致します。

Aベストアンサー

short open tagを有効にすると <?= も使えるようになります
http://php.net/manual/ja/ini.core.php


人気Q&Aランキング

おすすめ情報