Forum Webscript.Ru

Программирование => PHP => Тема начата: alesh от 25 Февраля 2003, 16:41:58

Название: One more time about Regular Expressions....
Отправлено: alesh от 25 Февраля 2003, 16:41:58
Всем привет.
Есть такая проблема:
Есть форма. В нее вполне можно вводить html, и она должна понимать его. но! Если ввести http://www.webscript.ru или http://www.webscript.ru БЕЗ форма должна преборазовывать это в ссылку.

Знаю тут много знатоков Регулярных Выражений, так что помогите пожалуйста
Название: One more time about Regular Expressions....
Отправлено: MrGreeN от 25 Февраля 2003, 17:05:19
alesh
А  
int link ( string target, string link)
или
int symlink ( string target, string link)
Не помогает?
Название: One more time about Regular Expressions....
Отправлено: alesh от 25 Февраля 2003, 17:12:39
Прошу прощения?
Название: One more time about Regular Expressions....
Отправлено: MrGreeN от 25 Февраля 2003, 17:23:47
alesh
Ну в смысле у тебя $target=$link="www.webscript.ru "
либо проверь, если http://, то добавь в начало http://
Название: One more time about Regular Expressions....
Отправлено: alesh от 25 Февраля 2003, 17:27:54
не, мне надо именно пегулярное выражение которое делает именно то что надо!=)
Название: One more time about Regular Expressions....
Отправлено: Mog. от 25 Февраля 2003, 17:55:03
Ни одно, даже самое правильно составленное, регулярное выражение не поймет, что имелл ввиду юзер, вводя какой либо текст. Оно может опознать ссылку по  http:// , но без этого - вряд ли.
Название: One more time about Regular Expressions....
Отправлено: alesh от 25 Февраля 2003, 17:57:17
гм.. ну тогда дайте регексп подстановки урла по http
Название: One more time about Regular Expressions....
Отправлено: nagash от 25 Февраля 2003, 18:41:08
почему? =)
вот регулярное выражение которое будет тебе выделять если у тебя есть http://
$text1 = ereg_replace("(http://[^ ]+)", "\\\\1", $text);

а вот это выражение фигачишь после него
оно тебе проверяет если у тебя есть http://www. и на всякий случае не реагирует на http:// чтобы повторно всё не изменить =)
$text2 = ereg_replace("([^http://]www.[^ ]+)", "\\\\1", $text1);

рабочий вариантец вот здесь
http://www.nagash.org/test/regexp.php

вот =)
Название: One more time about Regular Expressions....
Отправлено: alesh от 25 Февраля 2003, 18:48:13
Гы!
Почти!=)
Смотри чего мне надо.

$text="
[url]http://www.alesh.ru[/url]
[url]www.alesh.ru[/url]
alesh.ru
";


Что бы  при обработке всего этого было ТРИ ссылки=)
Название: One more time about Regular Expressions....
Отправлено: Mog. от 25 Февраля 2003, 18:49:30
Цитировать
оно тебе проверяет если у тебя есть www

Ok! А если, например, forum.alesh.ru ?
Название: One more time about Regular Expressions....
Отправлено: alesh от 27 Февраля 2003, 14:01:40
Так может кто помочь?
Название: One more time about Regular Expressions....
Отправлено: mike от 27 Февраля 2003, 15:45:03
Цитировать
А если, например, forum.alesh.ru ?

А если я напишу так: Wild.Wind.Wave. - это что? :) Если первое слово не www, правильно определить такую ссылку маловероятно.
Название: One more time about Regular Expressions....
Отправлено: mike от 27 Февраля 2003, 16:05:56
Вдогонку к предыдущему: можно набрать статистику часто вводимых доменов первого уровня и распознавать ссылки по ним, что-то вроде

/\\b([^\\/ ]+\\.(ru|com|biz|info|net|org))\\b/i

или вести полный список доменов :)
Название: One more time about Regular Expressions....
Отправлено: alesh от 27 Февраля 2003, 16:10:07
эх...
никто мне не поможет=(
Название: One more time about Regular Expressions....
Отправлено: Mog. от 27 Февраля 2003, 16:37:14
Цитировать
или вести полный список доменов

Ага, DNS серверок пристегнуть. :)

Цитировать
никто мне не поможет

Ну ограничся тем, что с http:// определяется и озвучь это для пишущих в форму.
Название: One more time about Regular Expressions....
Отправлено: Макс от 27 Февраля 2003, 19:15:06
http://php.spb.ru/php/url2.html
Название: One more time about Regular Expressions....
Отправлено: nagash от 27 Февраля 2003, 20:21:38
ну так добавь моему варианту чтобы он уже готовые ссылки изначально не трогал...
да и всё!
Название: One more time about Regular Expressions....
Отправлено: alesh от 28 Февраля 2003, 17:35:02
Ну так ты можешь полный код выложить , я совсем с регулярными выражениями не знаком.