[PHP-users 31333] 正規表現でアンカータグ内の要素を取得

luna na luna2ti @ hotmail.com
2007年 1月 29日 (月) 17:18:15 JST


はじめまして。るなと申します。

php初心者です。

preg_match_allでうまく取得できないので、
皆様のお知恵を拝借できればと思います。

行いたい処理は、
htmlのアンカータグから
1.アンカータグが正しいか?
2.アンカータグからURLを取得
です。
そこで、下記ソースで処理を行いました。

=============  ソース==================

$URL_pattern = "/\s+href\s*=\s*([\"\']?)([^\s
\"\'>]+)([\\1])/ims";
preg_match_all($URL_pattern, $atag, $matches, PREG_SET_ORDER);

echo "part 0: ".$matches[0][0]."\n";
echo "part 1: ".$matches[0][1]."\n";
echo "part 2: ".$matches[0][2]."\n";
echo "part 3: ".$matches[0][3]."\n";

if($matches[0][1] == $matches[0][3]) {
    echo  "OK";
}
====================================
$atagにはページから取得したアンカータグが入ります。
上記処理で、例えば$atagに下記タグを入れるとして、

A:<a href="http://www.xxx.jp ">
B:<a href=" http://www.xxx.jp >

AはOK、Bは終わりのダブルクォートがないためNG
というようにしたいのですが、

Aの結果----------------------
part 0: href=" http://www.xxx.jp
part 1: "
part 2: http://www.xxx.jp
part 3:
--------------------------------
Bの結果----------------------
part 0: href=" http://www.xxx.jp
part 1: "
part 2: href=" http://www.xxx.jp
part 3:
--------------------------------

となって、結果が同じになります。
part1とpart3にはURLを囲んでいる「ダブル、シングルクォート、又は何もなし」
というパターンが入るようにして、OKかどうか判断出来るようにし たら
望む処理ができそうな気がするので、
最初のマッチさせる正規表現をうまく書けばできそうなのですが
色々試してみてもだめでした。。。

どなたかご教授頂けますでしょうか。

宜しくお願い致します。

るな

_________________________________________________________________
大切なPCが風邪引く前に、ウィルス対策をしっかりと! http://onecare.live.jp 



PHP-users メーリングリストの案内