ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現は Web ページのハイパーリンク URL と Web ページの画像を抽出します

PHP 正規表現は Web ページのハイパーリンク URL と Web ページの画像を抽出します

WBOY
WBOYオリジナル
2016-07-25 08:52:571457ブラウズ
  1. function match_links($document) {
  2. preg_match_all("']+))[^>]*>?(.*?)'isx",$document,$links);
  3. while(list($key,$val) = each($links[2])) {
  4. if(!empty($val))
  5. $match['link'][] = $val
  6. }
  7. while(list($key,$val) = each; ($links[3])) {
  8. if(!empty($val))
  9. $match['link'][] = $val
  10. }
  11. while(list($key,$val) = each($ links[4])) {
  12. if(!empty($val))
  13. $match['content'][] = $val;
  14. }
  15. while(list($key,$val) = each($links[ 0])) {
  16. if(!empty($val))
  17. $match['all'][] = $val;
  18. }
  19. return $match
主に通常の質問、これはasp.netでのマルチテストの通常のルールです。 ページのリンク規則性を取得する

public string GetHref(string HtmlCode)
{
    string MatchVale = "";
  1. string Reg = @"(h|H)(r|R)(e|E)(f|F) *= *('|"")?((w|\|/|.|:|-|_)+)('|""| *|>)?";
  2. foreach (Regex.Matches( の m と一致) HtmlCode, Reg))
  3. {
  4. MatchVale += (m.Value).ToLower().Replace("href=", "").Trim() + "||"
  5. }
  6. return MatchVale;
  7. コードをコピー
  8. 例 2、PHP の正規表現を使用してコンテンツ内のリモート画像をダウンロードするための関数コード
PHP 正規表現を使用してコンテンツ内の画像を判断し、このドメイン名にない画像をダウンロードして保存するプログラム。 実はこのプログラム、「泥棒プログラム」の重要な部分を担っています。 プログラムのこのセクションは、リモート画像をダウンロードするためのセクションです。

if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content),$aliurl)) {

$i=0; //複数のファイル++
while(list($key ,$v) = each($aliurl[0])){
//echo $v."
"; $filetype = pathinfo($v, PATHINFO_EXTENSION); //サフィックス名を取得します
    $ff = @file_get_contents($v) //バイナリファイルの内容を取得します
  1. if(!stripos($v,"jbxue.com"); ){//自分のウェブサイトの画像かどうかを判断します
  2. if (!empty($ff)){ //ファイルを取得したら以下の操作を実行します
  3. $dir = "upload/".date("Ymd" ) ."/";//新しいストレージ パスを指定します
  4. if (!file_exists($dir)){//ディレクトリが存在するかどうかを確認します
  5. @mkdir($dir,511,true); //複数レベルのディレクトリを作成します,511 10 進数に変換すると、実行権限は 777 になります
  6. } // bbs.it-home.org
  7. $nfn = $dir.date("Ymdhis").$i.".".$filetype; //Build new file Name
  8. $nf = @fopen($nfn,"w"); //ファイルを作成します
  9. fwrite($nf,$ff); //ファイルを書き込みます
  10. fclose($nf); //複数のファイル++
  11. echo "";
  12. $content = str_replace($v,$nfn, $content);//コンテンツ内のパラメータを置換します
  13. }else{ //画像が取得できない場合は、デフォルトの画像に置き換えます
  14. $content = str_replace($v,"/upload/201204/20120417213810742.gif", $content);//content のパラメータを置き換えます
  15. }
  16. }
  17. }
  18. }
  19. コードをコピー
  20. 例 3、PHP は正規表現を使用して画像をローカルにダウンロードします。

    1. /*

    2. shortage: Web ページ内の画像パスが絶対パスでない場合、クロールできません
    3. */
    4. set_time_limit(0);//クロールには影響しません 時間制限

    5. $URL='http://pp.baidu.com/';//任意のURL

    6. get_pic($URL) ;< /p>

    7. function get_pic($pic_url) {

    8. //画像バイナリ ストリームを取得します
    9. $data=CurlGet($pic_url);
    10. /*正規表現を使用して画像リンクを取得します*/
    11. $pattern_src = '/ <[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]? >/';
    12. $num = preg_match_all($pattern_src, $data, $match_src);
    13. $arr_src=$match_src[1];//画像配列を取得
    14. get_name($arr_src);

      echo "
      finished!!!";

    15. return
    16. }

    17. /*画像の種類を取得し、ファイルと同じディレクトリに保存します*/

    18. function get_name($pic_arr )
    19. {
    20. //画像タイプ
    21. $pattern_type = '/(/.(jpg|bmp|jpeg|gif|png))/';

    22. foreach( $pic_arr as $pic_item) {//各画像のアドレスを取得するループ

    23. $num = preg_match_all($pattern_type, $pic_item, $match_type);
    24. $pic_name = get_unique().$match_type[1][0]; //マイクロ秒の時間を変更します クリックして名前を付けます
    25. $write_fd = @fopen($pic_name,"wb");
    26. @fwrite($write_fd, CurlGet($pic_item)); @fclose($write_fd);
    27. echo "[OK]..!";
    28. }
    29. return 0;//マイクロ秒単位で一意の ID を取得
    30. function get_unique(){
    31. list($msec, $sec ) =explode(" ",microtime());
    32. return $sec.intval($msec*1000000)
    33. }

    34. //ウェブページをキャッチコンテンツ

    35. function CurlGet($url) {
    36. $url=str_replace('&','&',$url);
    37. curl_setopt($curl, CURLOPT_URL, $url); $curl, CURLOPT_HEADER, false);

    38. //curl_setopt($curl, CURLOPT_REFERER,$url);

    39. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (互換性; MSIE 6.0; SeaPort) /1.2; Windows NT 5.1; InfoPath.2)");
    40. curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
    41. curl_setopt($カール、CURLOPT_RETURNTRANSFER、1);
    42. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
    43. curl_close($curl); /p>
    44. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。