AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Примеры использования объектной модели в PHP.


Нахождение ссылок и разбор относительных и прямых.

define("MY_HOST", "htmlweb.ru");
$doc = new DOMDocument();
$doc->loadHTMLFile("http://htmlweb.ru/index.php");
$links = $doc->getElementsByTagName("a");
for ($i = 0; $i < $links->length; $i++){
    $preparedLink = MyLink(MY_HOST, parse_url($links->item($i)->getAttribute("href")));
    $links->item($i)->setAttribute("href", $preparedLink);
}
echo $doc->saveHTML();
 
function MyLink($MyHost, $PLink, $Scheme = "http://"){
    if(!isset($PLink["host"])){
        $PLink["host"] = $MyHost;
    }
    $path = $PLink["path"] ? $PLink["path"] : "";
    $query = $PLink["query"] ? "?{$PLink["query"]}" : "";
    $fragment = $PLink["fragment"] ? "#{$PLink["fragment"]}" : "";
    return $Scheme . $PLink["host"] . $path . $query . $fragment . "\n";
}

Сначала мы выбираем из документа все ссылки (точнее их аттрибут href). С помощью функции приводим их все к абсолютному виду и записываем обратно в аттрибуты href. На выходе получаем документ, где все относительные ссылки заменены на абсолютные с хостом, указанным в константе MY_HOST.

Удаление всех скриптов(<script>) из кода

$doc = new DOMDocument();
$doc->loadHTMLFile("http://forum.codenet.ru/showthread.php?t=38806");
$all = $doc->getElementsByTagName("script");
for ($i = 0; $i < $all->length; $i++){
    $all->item($i)->remove;
}


Формирование списка активных ссылок на основании содержимого каталога

Этот скрипт используется для формирования списка примеров на этом сайте:

$path = dirname(__FILE__);
$dh = opendir( $path ) or die ( "Не удалось открыть каталог ".$path );
while ( $f = readdir( $dh ) ) { 
if (!(substr($f,-4)=='.php') || $f=="index.php") continue;	// исключаю картинки и текущий файл
   // Загрузить документ в массив
   $arr = file($path.'/'.$f);
   if ( !$arr ) die ("Page not found!");
   // Преобразую массив в строку
   $str = join( "", $arr );
   // Взять только то, что находится между тегами <title> и </title>
   if (preg_match('|<title.*?>(.*)</title>|sei', $str, $arr)) $title = $arr[1];
   echo '<a HREF="'.$f.'">'.$title."</a><br>\n";
   }

Определние кодовой страницы и преобразование полученной с помощью Curl-запроса кода в кодировку UTF-8

$ch= curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_VERBOSE,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$html= curl_exec($ch);
$html1= curl_getinfo($ch);

if ($html1['content_type']){
    $arr= explode('charset=',$html1['content_type']);
    $csethdr= strtolower(trim($arr[1]));
} else
    $csethdr= false;


$cset= false;
$arr= array();

if (preg_match_all('/(<meta\s*http-equiv="Content-Type"\s*content="[^;]*;\s*charset=([^"]*?)(?:"|\;)[^>]*>)/i',$html,$arr,PREG_PATTERN_ORDER)){
    $cset= strtolower(trim($arr[2][0]));
    if ($cset!='utf-8'||$cset!=$csethdr){
        $new= str_replace($arr[2][0],'utf-8',$arr[1][0]);
        $html= str_replace($arr[1][0],$new,$html);
        $cset= $csethdr;
    } else 
        $cset= false;

    if ($cset=='utf-8') $cset= false;
}
unset($arr);
if ($cset){
    $html= iconv($cset,'utf-8//IGNORE',$html);
}
unset($cset);

$html=preg_replace('/<head[^>]*>/','<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
',$html);

$dom= new DOMDocument();
$dom->loadHTML($html);

.

© Copyright 2008-2016 by KDG