質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

2回答

1994閲覧

imgタグを抽出する下記の正規表現を最短マッチにするには【PHP】

any--front-end

総合スコア11

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2020/11/27 00:06

編集2020/11/27 00:15

wordpressのimgタグの中から画像IDを抽出するための正規表現を使っておりますが、imgタグ同士が何も挟まず連続していると最長一致になってしまっています。
?を使うなどすればいいのかとおもってましたがうまくいっておらず、、お知恵を拝借できればと思います。

正規表現 : /<img.+class=[\'"].*wp-image-([0-9]+).*[\'"].*>/i 対象 : <img class="alignnone size-full wp-image-38" src="hoge.jpg" alt="" width="2304" height="1440" /><img class="alignnone size-full wp-image-36" src="fuga.jpg" alt="" width="1920" height="1080" /> 期待する結果 : 38, 36

よろしくお願いします…!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/11/27 00:08 編集

仰っている「ID」とはどこの何でしょうか。見た感じどこにもないような
any--front-end

2020/11/27 00:11

言葉足らずで失礼いたしました!画像IDのことです、wp-image-38の数字の部分となります…!
m.ts10806

2020/11/27 00:21

下手に正規表現使うよりDomParserのようなhtml解析のライブラリ使った方が良いようには思います。
any--front-end

2020/11/27 00:28

DomParser、存じ上げなかったです…! 時間があまりないので、正規表現で解決出来るならすごく助かるところではありますが、調べてみる価値ありそうです!ありがとうございます!
thyda.eiqau

2020/11/27 00:29 編集

`wp-image-` でexplodeして先頭の数値を取ればよいのでは?正規表現である必要があるのでしょうか。
guest

回答2

0

ベストアンサー

こういうのはきちんとDOMで処理した方がいいです

投稿2020/11/27 01:50

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/11/27 01:51

$html=<<<eod <img class="alignnone size-full wp-image-38 wp-image-123 wp-image-456a" data-class="wp-image-789" src="hoge.jpg" alt="" width="2304" height="1440" /><img class="alignnone size-full wp-image-36" src="fuga.jpg" alt="" width="1920" height="1080" /> eod; $doc=new DOMDocument(); $doc->loadHTML($html,LIBXML_NOWARNING ); foreach($doc->getElementsByTagName("img") as $node){ foreach(preg_split("/\s+/",trim($node->getAttribute("class"))) as $class){ if(preg_match("/(?<=\Awp-image-)\d+\z/",$class,$match)){ print $match[0]."<br>"; } } }
any--front-end

2020/11/27 02:23

確かに動作しました!こちらのほうが確実ですね…!ありがとうございます!他の回答くださった方もありがとうございます!こちらをベストアンサーにいたします!
guest

0

こういう感じでしょうか?

PHP

1<?php 2preg_match_all( 3 '/wp-image-(\d+)/', 4 '<img class="alignnone size-full wp-image-38" src="hoge.jpg" alt="" width="2304" height="1440" /><img class="alignnone size-full wp-image-36" src="fuga.jpg" alt="" width="1920" height="1080" />', 5 $matches, 6 PREG_PATTERN_ORDER 7); 8print_r($matches[1]); 9?> 10 11出力結果 12Array 13( 14 [0] => 38 15 [1] => 36 16)

投稿2020/11/27 01:02

ttyp03

総合スコア17000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

any--front-end

2020/11/27 01:15

ありがとうございます!一旦こちらで動作確認できました!シンプルな感じで良かったのですね…!助かりました…!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問