php正则婚配图片路径看preg_match_all()函数用法
php正则匹配图片路径看preg_match_all()函数用法
php正则匹配图片路径看preg_match_all()函数用法.<p>先看php代码:</p><pre class="php" name="code">$ext = 'gif|jpg|jpeg|bmp|png';//罗列图片后缀从而实现多扩展名匹配 by http://www.k686.com 绿色软件$str = '<p><img src="/static/imghw/default1.png" data-src="http://www.k686.com/data/soft_img/2010091101619.jpg" class="lazy" title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" /></p>';preg_match_all("/(href|src)=([\"|']?)([^ \"'>]+\.($ext))\\2/i", $str, $matches);var_dump($matches);
?
以上代码执行后的结果为:
array(5) { [0]=> array(1) { [0]=> string(57) "src="http://www.k686.com/data/soft_img/2010091101619.jpg"" } [1]=> array(1) { [0]=> string(3) "src" } [2]=> array(1) { [0]=> string(1) """ } [3]=> array(1) { [0]=> string(51) "http://www.k686.com/data/soft_img/2010091101619.jpg" } [4]=> array(1) { [0]=> string(3) "jpg" }}
?
?
<p>这里我们来温习下php手册上的函数说明:</p>
preg_match_all -- 进行全局正则表达式匹配说明int preg_match_all ( string pattern, string subject, array matches [, int flags] )在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。 搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。 flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义): PREG_PATTERN_ORDER对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。 <?phppreg_match_all ("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>this is a test</div>", $out, PREG_PATTERN_ORDER);print $out[0][0].", ".$out[0][1]."\n";print $out[1][0].", ".$out[1][1]."\n";?> 本例将输出: <b>example: </b>, <div align=left>this is a test</div>example: , this is a test 因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串。
?
可能还是有点迷糊,继续测试,这次换用多个图片地址,就能看的一清二楚了.
<?php$ext = 'gif|jpg|jpeg|bmp|png';//罗列图片后缀从而实现多扩展名匹配 by http://www.k686.com 绿色软件$str = '<p><img src="/static/imghw/default1.png" data-src="http://www.k686.com/data/soft_img/2010091101619.jpg" class="lazy" title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" /></p><p><img src="/static/imghw/default1.png" data-src="http://www.k686.com/data/soft_img/2010091029938.jpg" class="lazy" title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" /></p><p><img src="/static/imghw/default1.png" data-src="http://www.k686.com/data/soft_img/2010092839019.jpg" class="lazy" title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" /></p>';preg_match_all("/(href|src)=([\"|']?)([^ \"'>]+\.($ext))\\2/i", $str, $matches);var_dump($matches);?>
?
?
结果为:
array(5) { [0]=> array(3) { [0]=> string(57) "src="http://www.k686.com/data/soft_img/2010091101619.jpg"" [1]=> string(57) "src="http://www.k686.com/data/soft_img/2010091029938.jpg"" [2]=> string(57) "src="http://www.k686.com/data/soft_img/2010092839019.jpg"" } [1]=> array(3) { [0]=> string(3) "src" [1]=> string(3) "src" [2]=> string(3) "src" } [2]=> array(3) { [0]=> string(1) """ [1]=> string(1) """ [2]=> string(1) """ } [3]=> array(3) { [0]=> string(51) "http://www.k686.com/data/soft_img/2010091101619.jpg" [1]=> string(51) "http://www.k686.com/data/soft_img/2010091029938.jpg" [2]=> string(51) "http://www.k686.com/data/soft_img/2010092839019.jpg" } [4]=> array(3) { [0]=> string(3) "jpg" [1]=> string(3) "jpg" [2]=> string(3) "jpg" }}
?
?
对比下第一个简单的单图片例子,我们就更清楚需要哪一个元素了.一般情况下,我们是为了得到图片的真实直接路径,也就是 $matches[3] ,取出来做个foreach就可以继续下面的处理了.
?
实际上这个代码比较死板,正则可以改为:
preg_match_all('/<img (.*?)src=("|\'|\s)?(.*?)(?="|\'|\s)/',$str,$arr2);</pre alt="php正则婚配图片路径看preg_match_all()函数用法" ><p>?</p><p>其他不变.因为有些变态网站图片没有扩展名,就没辙了,所以换上面这个正则,管他什么扩展名,只要是img开头的,就跑不离是图片了.</p><pre class='brush:php;toolbar:false;'> function getname($fileext){ if( !in_array($fileext,array('gif','jpg','jpeg','bmp','png')) ) $fileext = 'png'; return date('Ymdhis').rand(100, 999).'.'.$fileext; }
?
这个是返回图片后缀,没有就默认png

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









img ファイルを開く方法には、仮想光学ドライブ ソフトウェアを使用する、圧縮ソフトウェアを使用する、特別なツールを使用するなどがあります。詳細な紹介: 1. 仮想光学ドライブ ソフトウェアを使用して、仮想光学ドライブ ソフトウェアを開き、ダウンロードしてインストールします。img ファイルを右クリックし、「プログラムから開く」または「関連プログラム」を選択し、ポップでインストールされている仮想光学ドライブ ソフトウェアを選択します。 -up ダイアログ ボックス、仮想 光学ドライブ ソフトウェアは、img ファイルを自動的にロードし、仮想光学ドライブのディスク イメージとして使用します。仮想光学ドライブのディスク アイコンをダブルクリックして、img ファイルを開いてその内容にアクセスします。等

Windows 11 で PNG を JPG に変換する方法 Windows 10 および 11 では、Microsoft の組み込みペイント アプリを使用して画像ファイルをすばやく変換できます。 Windows 11 で PNG 画像を JPG に変換するには、次の手順を実行します。 ファイル エクスプローラーを開き、変換する PNG 画像に移動します。画像を右クリックし、メニューから [プログラムから開く] > [描画] を選択します。写真または画像がペイント アプリで開きます。画面の下部にあるファイルサイズに注目してください。ファイルを PNG から JPG に変換するには、[ファイル] をクリックし、メニューから [名前を付けて保存] > [JPEG 画像] を選択します。ファイルリソースが

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

JPG は、PNG と並んで最も人気のある画像ファイル形式の 1 つです。これは、Web サイトに最適な非可逆圧縮画像形式です。したがって、多くのユーザーは画像を JPG 形式に保存または変換します。ただし、一部のユーザーは、プラットフォームのデフォルトの写真アプリを使用して Windows 11 で JPG ファイルを開くときに問題が発生すると述べています。したがって、これらのユーザーは Windows 11 で JPG 形式の画像を開いたり、表示したり、編集したりすることはできません。これは、あるユーザーが Microsoft フォーラムの投稿で述べたものです。JPG ファイルをダブルクリックして Microsoft Photo で開くと、「指定されたプログラムが見つかりません」というエラーが表示されます。 1ヶ月ほど前に新品で購入したものです

Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Java 開発で基本データ型を文字列に変換する必要がある場合、一般的な方法は String クラスの valueOf() 関数を使用することです。この関数は、基本データ型のパラメータを受け入れ、対応する文字列表現を返すことができます。この記事では、基本的なデータ型変換に String.valueOf() 関数を使用する方法を検討し、いくつかのコード例を提供します。

img ファイルを開く方法: 1. img ファイルのパスを確認します; 2. img ファイル オープナーを使用します; 3. 開く方法を選択します; 4. 画像を表示します; 5. 画像を保存します。 img ファイルは一般的に使用される画像ファイル形式で、通常は画像データを保存するために使用されます。

char配列をstringに変換する方法:代入によって実現できます {char a[]=" abc d\0efg ";string s=a;} 構文を使用して、char配列にstringに値を直接代入させて実行します変換を完了するためのコード。

近年、Web テクノロジーの継続的な発展に伴い、新しい画像形式である WebP がプログラマーや Web 開発者の視野に徐々に入り込んできています。 WebP の利点は無視できません。ファイル サイズが小さい、高品質、ブラウザのサポートが高いなどです。ただし、場合によっては、WebP 画像を JPG などの他の形式に変換する必要がある場合があります。では、PHP を使用して WebP を JPG に変換するにはどうすればよいでしょうか?
