RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 372
от 17.06.2006, 10:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 313, Экспертов: 50
В номере:Вопросов: 5, Ответов: 17


Вопрос № 45893: Здравствуйте уважаемые эксперты! Я сейчас занимаюсь написанием форума на PHP. И возникла проблемма следующего характера. В тексте необходимо заменить все ссылки на гиперссылки. Т.е. Допустим в тексте всречается http://www.rusfaq.ru значит необх...
Вопрос № 45915: Как работает следующая команда: require('bdopt.php');...
Вопрос № 45927: Здравствуйте, уважаемые эксперты! Появилась необходимость генерации документа формата .doc средствами PHP, тоесть человек заходит на сайт, заполняет форму и получает предложение сохранить себе на компьютер созданый файл. Честно гово...
Вопрос № 45941: Подскажите пожалуйста, как настроить PHP на работу XML, XSL и XSLT функций? У меня Apache 2.0.55, PHP 5.1.4 на Windows XP Pro SP2. Прочитал несколько статей. Загрузил файлы библиотек PECL (откуда взял php_domxml.dll). Загрузил би...
Вопрос № 45944: Здравствуйте! Имееться БД MySQL вида ip (varchar) date (date) надо надо сравнить поле data с результатом функции date(Ymw) отдельно для дня месяца и года. сам пытался сделать через встроенные функции MySQL - не получилось. Зара...

Вопрос № 45.893
Здравствуйте уважаемые эксперты!
Я сейчас занимаюсь написанием форума на PHP. И возникла проблемма следующего характера. В тексте необходимо заменить все ссылки на гиперссылки. Т.е. Допустим в тексте всречается http://www.rusfaq.ru значит необходимо её преобразовать в <a href="http://www.rusfaq.ru">www.rusfaq.ru</a>. Причём известно, что все ссылки начинаются либо с http:// либо с ftp:// и заканчиваются точкой, пробелом либо достигается конец текста. И ещё вопрос: как преобразовать дату формата UNIX в стандартный формат (например: 03 Jan 2006).
Отправлен: 11.06.2006, 11:59
Вопрос задал: Mark_by (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Селев Валерий
Здравствуйте, Mark_by!

Для замены ссылок в тексте на гиперссылки лучше воспользоваться регулярными выражениями.

Для преобраования даты из unix time stamp используйте функцию date.

Приложение:

Ответ отправил: Селев Валерий (статус: 1-ый класс)
Ответ отправлен: 11.06.2006, 12:23
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо. Вы действительно решили мою главную проблему в написании форума.

Отвечает: Cybernetic_Creature
Здравствуйте, Mark_by!
function date
http://php.net/manual/ru/function.date.php

date("d.m.Y",time());
Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 11.06.2006, 13:42

Отвечает: Cimus
Здравствуйте, Mark_by!
На ваши ответы уже ответили, но по поводу времени хотелось бы добавитью.
Можно преобразовать дату формата UNIX в русский формат.
Пример в приложении.

Приложение:

---------
Достичь можно любых высот !

Ответ отправил: Cimus (статус: 2-ой класс)
Ответ отправлен: 11.06.2006, 15:01
Оценка за ответ: 5
Комментарий оценки:
Очень интересная функция. Определённо стоит взять на заметку. Перевод даты нужен для определения активности на форуме, т.е. топик с наибольшим кол-вом постов и самой свежей датой модификации находится сверху остальных.


Вопрос № 45.915
Как работает следующая команда:
require('bdopt.php');
Отправлен: 11.06.2006, 18:11
Вопрос задал: Alexorg (статус: 1-ый класс)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Alexorg!

Читай тут:
http://ua2.php.net/manual/ru/function.require.php
http://project.net.ru/web-master/php/article1/09_4.html

И еще цитатка:
Оператор REQUIRE заменяет себя содержимым указанного файла, похоже на то,как в препроцессоре C работает #include.
Это означает, что вы не можете поместить require() внутрь цикла и ожидать, что он включит содержимое дугого файла несколько раз в процессе каждой итерации. Для это используйте INCLUDE.

---------
Ответы на все вопросы - на сайте www.ya.ru :)
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 11.06.2006, 18:28

Отвечает: Cimus
Здравствуйте, Alexorg!
Функции require и include в качестве аргумента принимают путь к файлу и имя файла. Синтаксис файла анализируеться так, как если бы он был автономным PHP сценарием. Работа этих функций аналогична директивам include языка С и require языка Perl. Но между этими функциями есть небольшое отличее. После обработки функция require замещаеться файлом, на который она указывает.Функция include действует аналогично действию вызову функции.
Более существенное различие между этими функциями проявляеться внутри цикла.
Пусть в нашем распоряжении имеються три файла, которые выполняються последовательно друг за другом. Функцию include можно разместить в цикле for, и если файлы имеют имена вроде 1.php, 2.php, 3.php, то проблем с программированием их обработки у разработчика не возникает. Эти имена можно задавать в цикле for, пользуясь переменной счётчика. Однако при использовании функции require первый файл будет обрабатываться все три раза. Так получаеться из-за того, что при первой интерации цикла вызов функции require будет раз и навсегда заменён содержимым первого файла. Как было сказанно выше, раздница незначительная, но она может иметь огромные последствия.
---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 2-ой класс)
Ответ отправлен: 11.06.2006, 18:42

Отвечает: Марк Крейн
Здравствуйте, Alexorg!
команда "require('bdopt.php');" работает следующим образом: она ищет файл bdopt.php в текущей директории. Если файл найден, код файла включается в скрипт, откуда эта команда была вызвана. Если такого файла нет, выполнение скрипта прекращается и выдаётся ошибка Fatal Error.
Ответ отправил: Марк Крейн (статус: 4-ый класс)
Ответ отправлен: 11.06.2006, 20:39

Отвечает: Цепковский Антон Сергеевич
Здравствуйте, Alexorg!

Функция require подключит файл bdopt.php к целевому файлу.

С уважением,
Антон Цепковский
---------
Вся наша жизнь - RPG
Ответ отправил: Цепковский Антон Сергеевич (статус: 1-ый класс)
Ответ отправлен: 11.06.2006, 21:16

Отвечает: Cybernetic_Creature
Здравствуйте, Alexorg!
эта функция фключит в себя содержимое файла bdopt.php
http://php.net/manual/en/function.require.php
Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 12.06.2006, 11:04

Отвечает: Mark_by
Здравствуйте, Alexorg!
Функция require("bdopt.php"); почти сходна с функцией include();, т.е. она включает шаблон в файл в котором была использована (в файле использующем функцию произойдёт выполнение файла bdopt.php). Но тем не менее есть одно важное отличие от функции include();. При использовании функции require(); она будет выполнена независимо от места в сценарии, т.е. она будет выполнена даже если находится в блоке if даже если она находится в ложном условии.
Ответ отправил: Mark_by (статус: 1-ый класс)
Ответ отправлен: 12.06.2006, 12:13


Вопрос № 45.927
Здравствуйте, уважаемые эксперты!

Появилась необходимость генерации документа формата .doc средствами PHP, тоесть человек заходит на сайт, заполняет форму и получает предложение сохранить себе на компьютер созданый файл.

Честно говоря пока даже не знаю в какую сторону копать, тем более хостинг на linux.

Буду рад любым идеям
Отправлен: 11.06.2006, 20:13
Вопрос задал: Studiosss (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Cybernetic_Creature
Здравствуйте, Studiosss!
можно сделать вместо док файла ХТМЛ.
его и генерировать легче и открывается он в браузере.
Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 12.06.2006, 11:00

Отвечает: Mark_by
Здравствуйте, Studiosss!
Привожу листинг простенького метода реализации. Сразу сделаю оговорку скрипт проверялся на локальном компьютере, все работало нормально. Так что не знаю как это будет работать всё на хостинге. Одно замечание на компьютере должен быть установлен Word, правда не знаю на сервере или у пользователя. Повторяю скрипт писался на локальной машине и тестировался на ней же.

Приложение:

Ответ отправил: Mark_by (статус: 1-ый класс)
Ответ отправлен: 12.06.2006, 12:52

Отвечает: Асташов Андрей Александрович
Здравствуйте, Studiosss!

Если Вам принципиально нужен формат doc, то ищите в поисковиках(скажу сразу, я ничего не нашел под *nix системы)
Но я думаю, что Вам прекрассно подойдет и формат RTF. Тем более что он более универсален(в плане разных текстовых процессоров). Вот по этой ссылке, Вы в течении месяца сможете скачать файл HTML_to_RTF.rar Название говорит само за себя. Проверено и работает. Удачи.

http://slil.ru/22833607

---------
Бросил курить сам - Брось курить другому!!!
Ответ отправил: Асташов Андрей Александрович (статус: Студент)
Ответ отправлен: 13.06.2006, 06:00

Отвечает: PVS
Здравствуйте, Studiosss!
Идея 1: (Трудоемкая) Покопатся в Internet'e и найти опись формата .doc (OpenOffice умеет с ним работать - значит можно покопатся в его исходниках)
Идея 2: (Надувательская :-) ) Генерите RTF и давайте ему расширение .doc
Ответ отправил: PVS (статус: 3-ий класс)
Ответ отправлен: 13.06.2006, 09:55


Вопрос № 45.941
Подскажите пожалуйста, как настроить PHP на работу XML, XSL и XSLT функций?
У меня Apache 2.0.55, PHP 5.1.4 на Windows XP Pro SP2.

Прочитал несколько статей.
Загрузил файлы библиотек PECL (откуда взял php_domxml.dll).
Загрузил библиотеки libxml2, libxslt и iconv.
В файле php.ini снял коментарий со строки:

extension=php_xsl.dll

Дописал строку:

extension=php_domxml.dll

Скопировал библиотеки libxml2, libxslt и iconv в папку из системной переменной PATH.
А функции XSL всё равно не доступны.

Подскажите что делать?
Отправлен: 11.06.2006, 22:23
Вопрос задал: Connery (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Марк Крейн
Здравствуйте, Connery!
Файл php_domxml.dll должен лежать там где лежат все dll-ки для php.Ещё раз проверьте соответствие версий файлов dll версии php, установленного у Вас. Попробуйте перезапустить Apache. В смысле, сначала остановить его, а потом снова запустить. Файлу php.ini очень желательно находиться в папке Windows.
Кстати, сейчас у себя посмотрел. У меня файла php_domxml.dll нет, но функции XML доступны. И у меня тоже PHP5.1.4. Вот, собственно, основные идеи.
Ответ отправил: Марк Крейн (статус: 4-ый класс)
Ответ отправлен: 11.06.2006, 22:51


Вопрос № 45.944
Здравствуйте!

Имееться БД MySQL вида ip (varchar) date (date)
надо надо сравнить поле data с результатом функции date(Ymw) отдельно для дня месяца и года. сам пытался сделать через встроенные функции MySQL - не получилось.

Заранее спасибо за ответы.
Отправлен: 11.06.2006, 23:01
Вопрос задал: Alexo (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Alexo!

Не совсем понятен вопрос, но думаю вам нужно вот это (я ваше поле date буду обзывать field_date - не люблю, когда названия полей совпадают с зарегистрированными словами :) )

MONTH(`field_date`)=date(m) - месяца равны
DAYOFMONTH(`field_date`)=date(d) -дни равны
YEAR(`field_date`)=date(Y) -года равны

Удачи!
---------
Ответы на все вопросы - на сайте www.ya.ru :)
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 12.06.2006, 00:29
Оценка за ответ: 3
Комментарий оценки:
я ими и пытался но не смог встроить их в запрос.

Отвечает: Cybernetic_Creature
Здравствуйте, Alexo!
$time=time();
$dat=date('Y-m-d',$time);
$query="select * from mytab where data='$dat'";
$res = mysql_query($query);
while ($r=mysql_fetch_row($res)) print_r($r);
Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 12.06.2006, 11:12

Отвечает: Константин
Здравствуйте, Alexo!
А попробуй хранить в TIMESTAMP
---------
Лучше сделать и жалеть, чем жалеть о том что не сделал
Ответ отправил: Константин (статус: 6-ой класс)
Ответ отправлен: 12.06.2006, 16:53


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное