
正規表現 画像リンクのaltの取得
正規表現初心者です。
PHPでHTMLからリンクが設定された画像の alt とリンク先URLを取得するパターン作成に悪戦苦闘しています。
やりたいこと
ページ上の画像(<img>)のalt のテキストを取得する。
ただし<img>タグはアンカー<a></a>で囲まれたリンクが設定されているもののみ。
要はリンクURLとaltテキストの組み合わせリストを作成することを目的としています。
ためしたこと
検索(PHPのpreg_match_allで)以下のパターンで取得を試みました。
#<a\s[^>]*?href\s?=\s?[\"\'](.*?)[\"\'].*?><img\s[^>]*?alt\s?=\s?[\"\'](.*?)[\"\'][^>]*?>#i
このパターンで実行した場合.*?の指定があだとなったようで範囲が拡大され、たとえば以下のようなパターンにもヒットししまいます。
<a href="aaa">bbb</a><a href="ccc"><img alt="ddd"></img></a>
これだと URL "aaa" に対するaltテキストが"ddd"という結果がになってしまい事実との矛盾が生じます。
勉強不足で恐縮ですが、アドバイスいただければ幸いです。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
効率よさそうじゃないのでわたしも分けた方がいいとは思いますが、書くとしたらこんな感じでどうでしょう。
$s = '<a href="aaa">bbb</a><a href="ccc"><img alt="ddd"></a>';
preg_match_all('#<a\s[^><]*?\bhref=["\']?([^"\'\s><]*)[^><]*>(?:(?!</a>).)*<img\s[^><]*?\balt=["\']?([^"\'><]*)#is', $s, $match);
foreach ($match[1] as $key=>$value)
echo $value,": ",$match[2][$key],"<br />\n";
お忙しい中知恵を絞っていただきありがとうございます。
分けるほうで進めてみますが、こちらも試させていただきスピードの速いほうを採用させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- HTML・CSS htmltとcssの連携をして画像縮小について 1 2022/11/15 20:32
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現
-
PHPで<a>タグ内からURLと文字を...
-
正規表現で記号 & アンドの検索...
-
「半角数字」と「+」を許可する...
-
eval
-
正規表現パターンの記入方法に...
-
URLを抽出する正規表現
-
PHPで似たコードを繰り返す場合...
-
文字列中の任意の数字を換算
-
正規表現で特定のHTMLタグのク...
-
正規表現で…
-
正規表現の書き方について
-
正規表現を使いimgタグ内から幅...
-
preg_match : マッチした位置の...
-
正規表現 画像リンクのaltの取得
-
正規表現で「0」のみ抽出
-
Smartyを使用した、テンプレー...
-
PHPで変数から1行目だけを取得...
-
VBAのコマンドボタンの文字列の...
-
1文字のStrConv fromUnicode
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで変数から1行目だけを取得...
-
VBAを使ってHTMLソースから特定...
-
、"(ダブルクォーテーション)...
-
PHPで<a>タグ内からURLと文字を...
-
preg_matchでエラーが出ます。
-
電話番号のチェック ハイフン...
-
正規表現でシングルクォーテー...
-
正規表現で「0」のみ抽出
-
Smartyで部分一致
-
正規表現で、半角大文字と半角...
-
C#でのワイルドカードを使った...
-
正規表現パターンの記入方法に...
-
Excelで数字のみを2倍3倍にする...
-
Smartyを使用した、テンプレー...
-
PHPメールフォーム URLと半角...
-
preg_matchの正規表現で
-
文字列から数値だけ取得するに...
-
「半角数字」と「+」を許可する...
-
php 正規表現で(ただし○○は除...
-
正規表現での改行数を求めるに...
おすすめ情報