ホームページ  >  記事  >  バックエンド開発  >  PHP記事集 URL補完機能(FormatUrl)_PHPチュートリアル

PHP記事集 URL補完機能(FormatUrl)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:17:061061ブラウズ

収集に必要な関数、URL 補完関数 (FormatUrl とも呼ばれる) を記述します。
この関数は、記事を収集するプログラムを開発するために書かれています。ページ内のパスが「絶対パス」ではない場合、「相対パス」または「絶対ルートパス」であることがよくあります。 URLが収集できません。

したがって、この関数はコードをフォーマットし、すべてのハイパーリンクをフォーマットして、正しい URL を直接収集できるようにするために必要です。

パス知識の普及
相対パス: "../" "./" または前に何も追加しない
絶対ルートパス: /path/xxx.html
絶対フルパス: http://www.xxx.com/ path/xxx.html
使用例:

コードをコピー コードは次のとおりです:

$surl="http://www.jb51.net/"; = 'ホームページソリューション'
echo formaturl($gethtm,$surl) );
?>

出力: ホームページソリューション
---------デモの例------------
元のパス コード: http :// www.newnew.cn/newnewindex.aspx
出力デモコード: http://www.maifp.com/aaa/test.php
以下は関数コードです
​​
コードをコピーします コードは次のとおりです:
function formaturl($l1,$l2){
if (preg_match_all("/(PHP記事集 URL補完機能(FormatUrl)_PHPチュートリアル]+src="([^"]+)"[^> ;]* >)|(]+href="([^"]+)"[^>]*>)|(]+src= '([ ^']+)'[^>]*>)|(]+href='([^']+)'[^>]*>)/ i", $l1,$regs)){
foreach($regs[0] as $num => $url){
$l1 = str_replace($url,lIIIIl($url,$l2),$l1) ;
}
}
return $l1;
}
function lIIIIl($l1,$l2){
if(preg_match("/(.*)(href|src)( |/> |> ).*/i",$l1,$regs)){$I2 = $regs[3];}
if(strlen($I2)>0){
$I1 = str_replace(chr(34) )," ",$I2);
$I1 = str_replace(chr(39),"",$I1);
}else{return $l1;}
$url_parsed = parse_url($l2); $url_parsed[ "scheme"];if($scheme!=""){$scheme = $scheme."://";}
$host = $url_parsed["host"];
$l3 = $scheme. $host;
if(strlen($l3)==0){return $l1;}
$path = dirname($url_parsed["path"]);if($path[0]=="\"){ $path= "";}
$pos = strpos($I1,"#");
if($pos>0) $I1 = substr($I1,0,$pos);
//型を判断する
if(preg_match( "/^(http|https|ftp):(//|\\)(([w/\+-~`@:%])+.)+([w/\.=?+ -~`@ ':!%#]|(&)|&)+/i",$I1)){return $l1; }//http で始まる URL タイプはスキップする必要があります
elseif($I1[0 ]=="/ "){$I1 = $l3.$I1;}//絶対パス
elseif(substr($I1,0,3)=="../"){//相対パス
while( substr($I1, 0,3)=="../"){
$I1 = substr($I1,strlen($I1)-(strlen($I1)-3),strlen($I1)-3 );
if(strlen($path)>0){
$path = dirname($path)
}
$I1 = $l3.$path."/".$I1
elseif; (substr($I1 ,0,2)=="./"){
$I1 = $l3.$path.substr($I1,strlen($I1)-(strlen($I1)-1),strlen ($I1)- 1);
}
elseif(strto lower(substr($I1,0,7))=="mailto:"||strto lower(substr($I1,0,11))=="javascript: "){
return $l1;
}else{
$I1 = $l3.$path."/".$I1;
}
return str_replace($I2,""$I1"",$l1);
}
?>


以下のリンクは、PHP 正規表現を学習する場所です。失われないように、ここにリンクを残してください。 。 。


http://www.bkjia.com/PHPjc/325775.html

www.bkjia.com

http://www.bkjia.com/PHPjc/325775.html技術記事収集に必要な関数、URL 補完関数 (FormatUrl とも呼ばれる) を記述します。 この関数を作成する目的は、収集プログラムを開発することです。記事を収集するときに、ページ上で「フェーズ...」というパスに遭遇することがよくあります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。