正規表現 画像リンクの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で変数から1行目だけを取得...
-
PHPで<a>タグ内からURLと文字を...
-
PHPメールフォーム URLと半角...
-
VBAを使ってHTMLソースから特定...
-
Excelで数字のみを2倍3倍にする...
-
「/」を利用した正規表現
-
カンマ区切りの金額を検索する...
-
テキストから特定の文字列をす...
-
preg_replace_callback が渡す...
-
変数に指定文字列が含まれると...
-
写メールBBSの携帯ページSoftBa...
-
正規表現で「0」のみ抽出
-
正規表現 許可文字列 かつ ...
-
preg_matchの正規表現で
-
phpでif文内で&の記述に疑問が...
-
2つのif 構文が1つしか動作し...
-
PHP 複数行の正規表現
-
php 正規表現で(ただし○○は除...
-
preg_matchによるカタカナチェ...
-
PHP preg_matchでUnknown modif...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
preg_matchでエラーが出ます。
-
VBAを使ってHTMLソースから特定...
-
Excelで数字のみを2倍3倍にする...
-
PHPで変数から1行目だけを取得...
-
正規表現でシングルクォーテー...
-
、"(ダブルクォーテーション)...
-
正規表現で「0」のみ抽出
-
住所から特定の文字列、数値を...
-
PHPで あるフォルダ内の、特定...
-
phpでhtmlソースを解析し、文字...
-
PHPで<a>タグ内からURLと文字を...
-
正規表現で特定のHTMLタグのク...
-
PHPの正規表現で住所を分けるに...
-
Smartyを使用した、テンプレー...
-
PHPによるIPアドレスマッチ
-
正規表現で、半角大文字と半角...
-
php 正規表現で(ただし○○は除...
-
PHPメールフォーム URLと半角...
-
「半角数字」と「+」を許可する...
-
preg_matchでのマッチが正しく...
おすすめ情報