ホームページ > バックエンド開発 > PHPチュートリアル > PHPで書かれた記事収集URL補完関数(FormatUrl)

PHPで書かれた記事収集URL補完関数(FormatUrl)

WBOY
リリース: 2016-07-25 09:05:17
オリジナル
1235 人が閲覧しました
function formaturl($l1,$l2){

if (preg_match_all("/(]+src="([^"]+)"[ ^>]*>)|(]+href="([^"]+)"[^>]*>)|(]+ src='([^']+)'[^>]*>)|(]+href='([^']+)'[^>]*> )/i",$l1,$regs)){foreach($regs[0] as $num => $url){

$l1 = str_replace($url,lIIIIl($url,$l2),$ l1);
}
    }
  1. return $l1;
  2. }
  3. function lIIIIl($l1,$l2){
  4. if(preg_match("/(.*)(href|src)=(.+?)( |/ >|>).*/i",$l1,$regs)){$I2 = $regs[3];}
  5. if(strlen($I2)>0){
  6. $I1 = str_replace(chr (34),"",$I2);
  7. $I1 = str_replace(chr(39),"",$I1);
  8. }else{return $l1;}
  9. $url_parsed = parse_url($l2);
  10. $スキーム = $url_parsed["スキーム"];if($scheme!=""){$scheme = $scheme."://";}
  11. $host = $url_parsed["ホスト"];
  12. $l3 = $スキーム.$host;
  13. if(strlen($l3)==0){return $l1;}
  14. $path = dirname($url_parsed["path"]);if($path[0]=="\" ){$path="";}
  15. $pos = strpos($I1,"#");
  16. if($pos>0) $I1 = substr($I1,0,$pos);
  17. //判断するtype
  18. if(preg_match("/^(http|https|ftp):(//|\\)(([w/\+-~`@:%])+.)+([w/\.= ? +-~`@':!%#]|(&)|&)+/i",$I1)){return $l1; }//http で始まる URL タイプはスキップする必要があります
  19. elseif($I1 [0 ]=="/"){$I1 = $l3.$I1;}//絶対パス
  20. elseif(substr($I1,0,3)=="../"){//相対パス
  21. while( substr($I1,0,3)=="../"){
  22. $I1 = substr($I1,strlen($I1)-(strlen($I1)-3),strlen($I1) -3 );
  23. if(strlen($path)>0){
  24. $path = dirname($path);
  25. }
  26. }
  27. $I1 = $l3.$path."/".$I1;
  28. }
  29. elseif (substr($I1,0,2)=="./"){
  30. $I1 = $l3.$path.substr($I1,strlen($I1)-(strlen($I1)-1) ,strlen ($I1)-1);
  31. }
  32. elseif(strto lower(substr($I1,0,7))=="mailto:"||strto lower(substr($I1,0,11))== javascript: "){
  33. return $l1;
  34. }else{
  35. $I1 = $l3.$path."/".$I1;
  36. }
  37. return str_replace($I2,""$I1"",$l1) ;
  38. }
  39. ?>
  40. コードをコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート