Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> URL, и снова он 
:(
    Опции темы
PARROT
Дата 26.2.2006, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: нет
Всего: 50



Это "Но" уже не такое страшное, Спасибо. Полегчало. Работает, да первую цифру душит, интересно знать почему оно так себя ведет smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 26.2.2006, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: нет
Всего: 50



Товарищи, это похоже на Птичий грипп, сначала email отказывался показываться нормально с первой строки, но теперь и URL ведет себя также. Диагноз один. Как справиться с общей проблемой? smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
-=Ustas=-
Дата 26.2.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



Т.е. обрезает самую первый символ, стоящий в самом начале строки?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
PARROT
Дата 26.2.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: нет
Всего: 50



Не совсем, URL с первой строки ведет себя вот так:
Код

http://www.vingrad.ru[/url]"[url=http://www.vingrad.ru]http://www.vingrad.ru

тут можно посмотреть и даже попробовать: http://pk.traktora.spb.ru/index.php?page=c...amp;#038;idp=65
Добавлено @ 18:10
А при наведении на ссылку, посылает вот сюда и так:
Код

http://pk.traktora.spb.ru/<a

Добавлено @ 18:15
вася
Такое впечатление, что ему не нравятся именно ссылки введенные от руки, вроде ссылки с описанием хоть с первой, хоть с последней строки пишутся нормально. Да именно так! Ссылки с описанием ему по зубам, а вот просто ссылки не нравятся, так же как и просто введенный от руки e-mail с первой строки. Может с функцией callback чего не так?
Добавлено @ 18:20
Выкладываю полностью свой класс, может быть так понятнее будет:
Вот класс:
Код

<?
class HtmlCodes {
 function AssemblyUrls($text) {
 $text        = preg_replace("%(?:^|[A-Z0-9])((?:http|ftp)://[-\w]+(?:\.[-\w]+)+\b[-\w:@&?=+,!/;\~*$\.\'\%]*)(?<![\.,?!)])%is", "[url]\\1[/url]", $text);
 $text        = preg_replace("%\[url\](.+?)\\[\/url\]%is", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $text);
               return $text;
        }
function AssemblyEmail($text)
{
    $text = preg_replace("#(^[^\[]|\s)((\w|\d){1}(\w|\d|\-|_|\.|\+)+?(\w|\d){1}@((\w|\d){1,}(\-|\.){0,1}(\w|\d){1,})+?\.(\w){2,4})#is", "[email]\\2[/email]", $text);

    $text = preg_replace("#\[email\](.*)\[\/email\]#isU", "<a target=\"_blank\" href=mailto:\\1>\\1</a>", $text);
    $text = preg_replace("#\[email=(.*)\](.*)\[\/email\]#isU", "<a target=\"_blank\" href=mailto:\\1>\\2</a>", $text);

    return $text;
}


        function ApplyFormatting($text, $nl2br = true) {

                return str_replace(
                        array('[i]', '[/i]', '[b]', '[/b]', '[u]', '[/u]', '[quote]','[/quote]','[color=red]','[/color]','[color=blue]','[/color]','[size=1]','[/size]','[size=2]','[/size]','[size=6]','[/size]','[size=8]','[/size]','[size=10]','[/size]','[font=arial]','[/font]','[font=courier]','[/font]','[font=impact]','[/font]','[font=tahoma]','[/font]','[font=times]','[/font]','[font=verdana]','[/font]','[justify]', '[/justify]',
                                '[center]',  '[/center]','[right]', '[/right]', '[left]', '[left]',),
                        array('<i>', '</i>', '<b>', '</b>', '<u>', '</u>','<div class=quote>','</div>','<font color=red>','</font>','<font color=blue>','</font>','<font size=1>','</font>','<font size=2>','</font>','<font size=6>','</font>','<font size=8>','</font>','<font size=10>','</font>','<font face=arial>','</font>','<font face=courier>','</font>','<font face=impact>','</font>','<font face=tahoma>','</font>','<font face=times>','</font>','<font face=verdana>','</font>','<p align="justify" class="content">', '</p>',
                                 '<p align="center" class="content">', '</p>', '<p align="right" class="content">', '</p>',
                                 '<p align="left" class="content">', '</p>',), (($nl2br == true) ? nl2br($text) : $text)
                );

        }

         function Assemblyimg($text) {
                $text        = preg_replace("%[^=\]\[]((?:http|ftp)://[-\w]+(?:\.[-\w]+)+\b[-\w:@&?=+,!/;\~*$\.\'\%]*)(?<![\.,?!)])%is", "[url=\\1\]\\1[/url]", $text);
                $text        = preg_replace("%\[pict\](.*)\\[\/pict\]%is", "<a target=\"_blank\" href=\"\\1\"><img src=\\1 border=0></a>", $text);
               return $text;
        }

}
?>

Вот кусок вывода из базы:
Код

       $mas_com[4] = HtmlCodes::AssemblyUrls($mas_com[4]);
       $mas_com[4] = HtmlCodes::Assemblyimg($mas_com[4]);
       $mas_com[4] = HtmlCodes::Assemblyemail($mas_com[4]);
       $mas_com[4] = HtmlCodes::ApplyFormatting($mas_com[4]);
       $mas_com[4]=preg_replace("/\[url=([^\]]*)\](.*)\[\/url\]/", "<a href=\"\\1\">\\2</a>", $mas_com[4]);
       $mas_com[4]=preg_replace("/\[pict=([^\]]*)\](.*)\[\/pict\]/", "<a href=\"\\1\">\\2</a>", $mas_com[4]);



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
-=Ustas=-
Дата 26.2.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



PARROT, покажи код.
Добавлено @ 18:30
Не вижу проблем:
Код

function AssemblyUrls($text)
{
    $text = preg_replace("%(?:^|[A-Z0-9])((?:http|ftp)://[-\w]+(?:\.[-\w]+)+\b[-\w:@&?=+,!/;\~*$\.\'\%]*)(?<![\.,?!)])%is", "[url]\\1[/url]", $text);
    $text = preg_replace("%\[url\](.+?)\\[\/url\]%is", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $text);
    $text = preg_replace("#\[url=(.*)\](.*)\[\/url\]#isU", "<a target=\"_blank\" href=\"\\1\">\\2</a>", $text);

    return $text;
}

Мож я что-то не так тебя понял?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
PARROT
Дата 26.2.2006, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: нет
Всего: 50



При таком URL-классе, если пользоваться только классом, то ссылка по наведению выглядит в строке так:
Код

http://pkspo/[url=http://avto.spb.ru]http://avto.spb.ru[/url]"

А если после класса воспользоваться этим регом:
Код

$mas_com[4]=preg_replace("/\[url=([^\]]*)\](.*)\[\/url\]/", "<a href=\"\\1\">\\2</a>", $mas_com[4]);  

То при наведению на ссылку выглядит так:
Код

http://pkspo/<a




--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
-=Ustas=-
Дата 26.2.2006, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



PARROT, я тебя что-то опять не понимаю. Зачем тебе там несколько раз какими-то классами прогонять, выше функция нормально все заменяет в подобном тексте:
Код

$string = "http://vingrad.ru <br>dfjvbh df bdsjvhbzxjhc vb <br> [url]http://vingrad.ru[/url]<br> dfkjn fv <br>[url=http://vingrad.ru]PARROT[/url]<br>dfjkvn kjd vn dfjk vnkdjs vnkdsjf vndsv<br> [email]PARROT[/email]";



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
PARROT
Дата 26.2.2006, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: нет
Всего: 50



Если использовать этот класс (твой), то получается вот так:
http://pk.traktora.spb.ru/index.php?page=comment&idp=87

Че-то я не понимаю, а тут работает: http://pk.traktora.spb.ru/url.php

Может отдохнуть надо, или я уже чего не понимаю. smile

Это сообщение отредактировал(а) PARROT - 26.2.2006, 20:28


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
-=Ustas=-
Дата 27.2.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



Цитата(PARROT @ 26.2.2006, 20:18 Найти цитируемый пост)
Если использовать этот класс (твой), то получается вот так:

smile Не может быть! У меня работает на ура... smile


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
PARROT
Дата 27.2.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: нет
Всего: 50



Щас буду искать ошибку методом исключения, что кому мешает, иначе уже никак. А с email ничего не сделать, то что он первую цифру глотает?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 27.2.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: нет
Всего: 50



Да, действительно, все работает.
Нашла я конфликт:
Вот эта функция для фоток, конфликтует с функцией URL.
Код

function Assemblyimg($text) {
                $text        = preg_replace("%[^=\]\[]((?:http|ftp)://[-\w]+(?:\.[-\w]+)+\b[-\w:@&?=+,!/;\~*$\.\'\%]*)(?<![\.,?!)])%is", "[pict=\\1\]\\1[/pict]", $text);
                $text        = preg_replace("%\[pict\](.*)\\[\/pict\]%is", "<a target=\"_blank\" href=\"\\1\"><img src=\\1 border=0></a>", $text);
               return $text;
        }

Как быть? Соединить нельзя?




--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
-=Ustas=-
Дата 27.2.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



PARROT, подожди, я нашел глюк, та функция заменяет ссылки вида http://.... только в начале строки... smile
Добавлено @ 11:25
Вот исправленный вариант той функции:
Находит сначала ссылки вида www.kjbfkjb........ , заменяет их на вид http://www.sdfv....... , затем ссылки вида http://..... заменяет на [url] и потом все по распорядку как и раньше:
Код

function ReplaceUrl($string)
{
    $string = preg_replace("#(^[^\[]|\s)((www)\.[-\w]+(?:\.[-\w]+)+\b[-\w:@&?=+,!/;\~*$\.\'\%]*)(?<![\.,?!)])#is", " http://\\2", $string);
    $string = preg_replace("#(^[^\[]|\s)((http|ftp)://[-\w]+(?:\.[-\w]+)+\b[-\w:@&?=+,!/;\~*$\.\'\%]*)(?<![\.,?!)])#is", " [url]\\2[/url]", $string);
    $string = preg_replace("#\[url\](.*)\\[\/url\]#isU", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $string);
    $string = preg_replace("#\[url=(.*)\](.*)\[\/url\]#isU", "<a target=\"_blank\" href=\"\\1\">\\2</a>", $string);

    return $string;
}

Добавлено @ 11:28
Хотя, тот глюк, который имел место при email, точно также распространился и на урлы, т.е. если это начало строки, и в начале строки сразу же без пробела идет адрес, то его не хочет находить. Надо еще поизвращаться... smile


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
PARROT
Дата 27.2.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: нет
Всего: 50



http://pk.traktora.spb.ru/url.php 1 функция
http://pk.traktora.spb.ru/url1.php 2 исправленная


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
-=Ustas=-
Дата 27.2.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



PARROT, ну так и...? Что-то не так?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
PARROT
Дата 27.2.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: нет
Всего: 50



Я немножко не понимаю, одна функция должна делать все эти действия или эта функция только для URL?
Добавлено @ 13:30
Просто email и URL написанные от руки эта функция не подсвечивает. Я сейчас объединила в одну и картинки здесь же, все работает, но не подсвечиваются простые ссылки написанные от руки. А так клево, все работает от одной функции, а не от 3 разных. smile
Код

<?
 function AssemblyUrls($text)
{
    $text = preg_replace("#(^[^\[]|\s)((www)\.[-\w]+(?:\.[-\w]+)+\b[-\w:@&?=+,!/;\~*$\.\'\%]*)(?<![\.,?!)])#is", " http://\\2", $text);
    $text = preg_replace("#(^[^\[]|\s)((http|ftp)://[-\w]+(?:\.[-\w]+)+\b[-\w:@&?=+,!/;\~*$\.\'\%]*)(?<![\.,?!)])#is", " [url]\\2[/url]", $text);
    $text = preg_replace("#\[url\](.*)\\[\/url\]#isU", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $text);
    $text = preg_replace("#\[url=(.*)\](.*)\[\/url\]#isU", "<a target=\"_blank\" href=\"\\1\">\\2</a>", $text);
    $text = preg_replace("#\[email\](.*)\[\/email\]#isU", "<a target=\"_blank\" href=mailto:\\1>\\1</a>", $text);
    $text = preg_replace("#\[email=(.*)\](.*)\[\/email\]#isU", "<a target=\"_blank\" href=mailto:\\1>\\2</a>", $text);
    $text = preg_replace("%\[pict\](.*)\\[\/pict\]%is", "<a target=\"_blank\" href=\"\\1\"><img src=\\1 border=0></a>", $text);
    return $text;
}

$string = "http://vingrad.ru <br>dfjvbh df bdsjvhbzxjhc vb <br> [url]http://vingrad.ru[/url]<br> dfkjn fv <br>[url=http://vingrad.ru]PARROT[/url]<br>dfjkvn kjd vn dfjk vnkdjs vnkdsjf vndsv<br> [email]PARROT[/email]<br>[[email protected]]Íàòàëèÿ[/email]<br>[email protected]<br>[pict]http://web/drug.jpg[/pict]";
$string = AssemblyUrls($string);
echo $string;
?>


Это сообщение отредактировал(а) PARROT - 27.2.2006, 13:38


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.1278 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.