Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > как вывести скриптом html-код документа?


Автор: 4YBAK 24.10.2006, 20:26
Тема вот в чем.
Помогите замутить скрипт, который:
1) юзверь вводит произвольный УРЛ в форму и тычит кнопку ОК
2) скрипт выводит html  код документа, расположенного по введенному юзвером адресу.
3) не просто выводит, а отображает его с подсветкой тегов красным шрифтом и атрибутов синим.

Даже не наю, как подступиться, хотя вроде пустиковая задачка. Хелп ми плиз!

Автор: -=Ustas=- 25.10.2006, 08:37
Сокеты + рег.выражения + ПОИСК ПО ФОРУМУ, ТЕМ ТАКИХ НАВАЛОМ!!!

Автор: 4YBAK 26.10.2006, 00:54
Кое-чего в поиске нарыл.
Этим кодом выводица html-код файла file.html

Код

$content = file_get_contents('./file.html');
$content = htmlspecialchars($content, ENT_QUOTES);
echo $content;


а как мне теперь поменять цвет тегов и атрибутов?
ну например:
<a href=www.rambler.ru>rambler</a>
Надо чтобы <a  и </a>   было красным шрифтом, href синим.
И так со всеми тегами.
Наскоко я понимаю, надо заводить массив, в который загонять все html теги, и второй массив с html атрибутами?




Автор: korisarimi 26.10.2006, 09:07
Никакие массивы не нужны, составь регулярное выражение.

Автор: 4YBAK 26.10.2006, 15:38
Не подскажешь толковую инфу по регвырам? (в эл. виде)
А то я плохо в них рублю smile

Автор: -=Ustas=- 26.10.2006, 16:04
Цитата(4YBAK @  26.10.2006,  15:38 Найти цитируемый пост)
Не подскажешь толковую инфу по регвырам? (в эл. виде)
А то я плохо в них рублю 

Найди книгу Джона Фридла - Регулярные выражения, в инете доступна в эл.варианте. Советую.

Добавлено @ 16:08 
Ну и с этим можешь ознакомиться - http://ru.php.net/manual/ru/reference.pcre.pattern.syntax.php

Автор: Eugene_Bond 26.10.2006, 19:31
Зачем регулярные выражения?
Ставь модуль http://pecl.php.net/package/colorer или работай с оригинальным "раскрасщиком" напрямую. Багов будет меньше однозначно smile

Автор: 4YBAK 26.10.2006, 21:53
colorer он походу только для никсов (там ток tgz архивы), а у меня винда

Добавлено @ 21:55 
ребят, помогите, плиз, составить этот несчастный регвыр!  У меня уже мозги кипят!
Плиз, если не трудно.

Автор: -=Ustas=- 27.10.2006, 11:31
4YBAK, вот тебе элементарный базовый пример накатал:
Код

<?php

function GetFile($url)
{
    $purl = parse_url($url);
    $host = $purl['host'];
    $page = '';
    $headers = '';

    if ($socket = fsockopen($host, 80, $errno, $errstr, 30)) {
        
        if (isset($purl['path'])) {
            $headers .= "GET ".$purl['path']." HTTP/1.0\r\n";
        } else {
            $headers .= "GET / HTTP/1.0\r\n";
        }
        
        $headers .= "Accept: */*\r\n";
        $headers .= "Accept-Language: ru\r\n";
        $headers .= "Referer: My Referer\r\n";
        $headers .= "Host: ".$purl['host']."\r\n";
        $headers .= "User-Agent: UserAgent/1.0\r\n";
        $headers .= "Connection: Close\r\n\r\n";

        fputs($socket, $headers);

        while (!feof($socket)) {
            $page .= fgets($socket);
        }
        fclose($socket);

        $page = substr($page, (strpos($page, "\r\n\r\n") + 4), strlen($page));

        return $page;

    } else {
        return FALSE;
    }
}

$string = GetFile('http://domain.ru');

$string = htmlspecialchars($string);

$string = preg_replace('#(?:([A-Za-z\-]+\=(?:&quot;|\'|\s)(:?.*)(?:&quot;|\'|\s)))#iU', '<font color="green">\\1</font>', $string);
$string = preg_replace('#(&lt;(.*)&gt;)#iU', '<font color="red">\\1</font>', $string);

echo '<pre>';
echo $string;

?>

Работает нормально, если захочешь лучше сделать, то учи реги ;)

Автор: SamDark 27.10.2006, 13:53
Кстати, можно и http://qbnz.com/highlighter/ попользовать.

Автор: 4YBAK 27.10.2006, 15:17
-=Ustas=-
Огромное спасибо!
Теперь будет гораздо легче!

зы. регвыры - это капец гемор! smile
Программирование, походу, вооще не мое smile
Пойду-ка я лучше баранку крутить smile

Автор: -=Ustas=- 27.10.2006, 15:42
Цитата(4YBAK @  27.10.2006,  15:17 Найти цитируемый пост)
зы. регвыры - это капец гемор!

регвыры - это сила

Автор: 4YBAK 27.10.2006, 22:45
а существует ли редактор регвыров, в который просто указываешь, что нужно, и он генерит готовый регвыр?

Автор: -=Ustas=- 28.10.2006, 10:05
Цитата(4YBAK @  27.10.2006,  22:45 Найти цитируемый пост)
а существует ли редактор регвыров,

Конечно - Дж.Фридл "Регулярные выражения".  Прочитаешь и будешь генерить регвыры лучше всяких программ.

Автор: 4YBAK 28.10.2006, 17:00
дай ссылку плиз!
и еще, может посоветуешь по сокетам че-нить толковое?

Автор: SelenIT 28.10.2006, 19:40
4YBAK, вот неплохая http://phpfaq.ru/regex, там есть ссылки и на электронного Фридла, и на генератор регвыров smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)