正規表現道場@2ch Part4
■ このスレッドは過去ログ倉庫に格納されています
0809nobodyさん
2005/11/16(水) 02:15:16ID:S0o67+2ohtmlから正規表現を使って一部分を取得したいのですがちょっと引っかかってます。
言語はPHPなんですがperl等でも理解はできるので宜しくお願いします。
簡単に言うと、例えば・・・
$source = "<a href=ttp://aaa.com/>あああ</a>";
と文字列があるとして URLと表示部分を取得するには現在は以下のようにしています。
// = の次から > を含まない全角を含んだ全ての文字が連続する物を取得
// > の次から < を含まない全角を含んだ全ての文字が連続する物を取得
mb_eregi("<a href=((?:(?!>).)*)>((?:(?!<).)*)</a>",$source,$reg);
これで
$reg[1] = "ttp://aaa.com/"
$reg[2] = "あああ"
上記のように取得できたんですが
$source = "<a href=ttp://aaa.com/>あああ</a><a href=ttp://ccc.com/>bbb</a>";
こんなふうに、ヒットする物が繰り返される場合
最初の "ttp://aaa.com/" と "あああ" しか取得できず
次に有る "ttp://ccc.com/" と "ddd" は無視されてしまいます
aタグは複数連なっており、全てではなく場合によって n 個目を取得したいです。
n回目にヒットした物や、次にヒットした物、を得る方法は無いでしょうか?
正規表現で何とかなる問題なのかどうかも解りません。
do while とか使わないと出来ないんでしょうか・・・
※ mb_eregi() は、大文字小文字を区別しないマルチバイト対応な関数です
■ このスレッドは過去ログ倉庫に格納されています