Интернет - справочник для веб-мастеров
    441-847-152
     
 
 
php, javascript,ajax,mysql,TIGER CMS
  Для начинающих
php, javascript,ajax,mysql,TIGER CMS
  Общие
php, javascript,ajax,mysql,TIGER CMS
  Безопасность
php, javascript,ajax,mysql,TIGER CMS
  Интересное
php, javascript,ajax,mysql,TIGER CMS
  Новости PHP
php, javascript,ajax,mysql,TIGER CMS
  PHP + AJAX
php, javascript,ajax,mysql,TIGER CMS
  JavaScript
php, javascript,ajax,mysql,TIGER CMS
  Дизайн
php, javascript,ajax,mysql,TIGER CMS
  Раскрутка
php, javascript,ajax,mysql,TIGER CMS
  Заработок
php, javascript,ajax,mysql,TIGER CMS
  Советы

   
 

   
 
  SEO статьи HTML, как раскрутить сайт
1. Рейтинг сайтов

мебель ванная, продажа душевых кабин


 
 
  Всего статей: 405
  Опубликовано: 405
  Проверяються: 0
  Добавлено сегодня: 0
-------------------------------------
  Прочитано статей: 405
  Всего прочтений: 181116
-------------------------------------
  Сейчас читают: 6 чел.


 

PHP в вопросах и ответах. Часть II. [Версия для печати]
Разместил: admin . Раздел: Для начинающих. Опубликовано: 07-25-2007 22:32:49

Продолжаем отвечать на вопросы, возникающие при программировании на PHP.

Вопрос: Как вырезать со страницы все ссылки?

Ответ.
<? 
   echo "<pre>";

   // качаем страницу в переменную $buf
   $buf=implode("",file("http://www.ru/")); 

   // получем ссылки в массив
   preg_match_all("/<[Aa][ ]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '" ]*([^ "'> #]+)[^>]*>/",$buf,$url); 

   // выводим массив на экран
   while($i<count($url[1])) { echo $url[1][$i++]." "; }

   echo "</pre>"; 
?>


Вопрос: Как вытащить слова из текста?

Ответ. Слово - непрерывная последовательность символов. Используем это в нашем скрипте.
<?php
$x="Типа, %^& читайте___люди~~~~__маны__  На... РУССКОМ!! Будете+здоровы.  abc, qwe, zxc";
preg_match_all('/([a-zA-Zа-яА-Я]+)/',$x,$ok);
for ($i=0; $i<count($ok[1]); $i++) echo $ok[1][$i]."<br>"; 
?>


Результат будет таким:
Типа
читайте
люди
маны
На
РУССКОМ
Будете
здоровы
abc
qwe
zxc

Вопрос: Есть некий текст, в котором встречаются фразы типа "А не пойти ли тебе на http://softportal.com ?". Нужно сделать все слова, похожие на ссылки, html-ссылками, т.е. преобразовать текст примерно так: "А не пойти ли тебе на <a href=http://softportal.com>http://softportal.com ?</a>".

Ответ.(Решение)
<?php
   $buf="

http://любые слова

sadkjfjkas dfkjasdf ajksd fjkdsfh jksdf kasjdfh kjdfjksdaf 
asfdasd.fklja sdfk.jaas kasldf.jaskldjfls.kadjfkls.dfjaklsdf 

1     www1.ru    
2     www2.ru/123/123
3     SOFTPORTAL.COM
4     www.softportal.com
5     www.123.456.ru/1234/asd#tip-top
6     http://www.ru
7     http://www.ru/123/123
8     http://softportal.com
9     http://www.softportal.com
10    HTTP://www.download.softportal.com (скачать новую Асю :-)
11    dmitry.spb.ru
      
      BAD
      BAD234579324875.12312
      BAD.q
      www.BAD.rrrr
      www.BAD.123
";

   echo "<big><b>Имеется текст:</b></big> <pre>$buf</pre>";

// 1 //

   $buf=strtolower($buf);
   preg_match_all("/(http:\/\/)?([a-z_0-9-.]+\.[a-z]{2,3}(([ "'> ])|(\/([^ "'> ]*)?)))/",$buf,$url); 
   echo "<big><b><br><br>Часть 1. В тексте было найдено:</b></big><pre>";
   for($i=0; $i<count($url[2]); $i++)
      echo "<a href="javascript:if(confirm('http://".$url[2][$i]."/  This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  Do you want to open it from the server?'))window.location='http://".$url[2][$i]."/'" tppabs="http://".$url[2][$i]."/">".$url[2][$i]."</a> ";
   echo "</pre>";

// 2 //

   echo "<big><b><br><br>Часть 2. Замена текста-ссылки на html-код прямо в тексте:</b></big><pre>"; 
   $x=explode(" ",$buf);
   for ($j=0; $j<count($x); $j++) {
      if (preg_match("/(http:\/\/)?([a-z_0-9-.]+\.[a-z]{2,3}(([ "'> ])|(\/([^ "'> ]*)?)))/",$x[$j],$ok))
      echo str_replace($ok[2],"<a href="javascript:if(confirm('http://$ok[2]/  This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  Do you want to open it from the server?'))window.location='http://$ok[2]/'" tppabs="http://$ok[2]/">$ok[2]</a>",
                         str_replace("http://","",$x[$j]))." ";
      else
      echo $x[$j]." ";
   }
?>


P.S. почему www1.ru не превратилась в ссылку? Попытайтесь найти ответ на этот вопрос сами...

Вопрос: Как узнать размер файла на каком-то веб-сервере?

Ответ.Чтобы это сделать, нужно открыть сокет (установить соединение с удаленным веб-сервером). Сокет - это файл, в который можно писать и читать. Далее в сокет (как в файл) нужно написать заголовок (HEAD filename ...). После считать из сокета то, что нам напишут. Для начала выведите это на экран, чтобы было понятно, что именно вам возвращают. В ответе сервера, что мы считаем, будет много полезной информации - тип и ОС сервера, дата модификации и размер файла, другая информации. Все, что нужно - выкусить из текста нужное число и вывести его на экран.
<?php
$fname='/path-to-file/big-big-big.mpg';
$fhost='www.super-mega.ru';

$x=0;
$fp = fsockopen($fhost, 80, &$errno, &$errstr, 30) or die("облом");

fputs($fp,"HEAD $fname HTTP/1.0 HOST: $fhost ");
while(!feof($fp)) $x.=fgets($fp,128);
fclose($fp);

if (ereg("Content-Length: ([0-9]+)",$x,$size)) echo "Размер файла $size[1] байт";
else echo "Определить невозможно";
?>

Источник: http://www.softportal.com/   Прочитана 665 раз.
  Закладки:  
     
     
     
Google
 




     
Copyright 2007 by bvisoft.com