Перейти к содержимому


Замена текста на ссылку


Сообщений в теме: 8

#1 Илья

    Активный участник

  • Пользователи
  • PipPipPip
  • 173 сообщений

Отправлено 02 Декабрь 2009 - 14:14

Немного не устроило функционирование типа поля "Ссылка". Когда кормишь его ссылкой, он ее же выдает в таблице.
Проблема всплывает, когда ссылка слишком длинная - с таблицей все в порядке, а вот подробная информация о записи разьезжается.
Решил поправить это с помощью вычислений - автоподстановка ХТМЛного кода и создание ссылки с надписью "Тыц!" вместо длинной ссылки.
Код такой:

$text = data_table("Договоры","id={ID}");
$link = $text["Ссылка на скан"];
$link = preg_replace("/(?<!http:\\/\\/)(www)(\\S+)/si",'http://www\\2', $link);
$link = preg_replace("/(http:\\/\\/)(\\S+)/si",'<a href="http://\\2" target=_new>"Тыц!"</a>',$link);

return $link;

Проблема в том, что при изменении информации о записи это вычисление отрабатывает еще раз, и получается некрасиво.

Как сделать таким образом, чтобы при сохранении информации уже имеющийся HTML-код для ссылки не обрабатывался повторно?

#2 Илья

    Активный участник

  • Пользователи
  • PipPipPip
  • 173 сообщений

Отправлено 02 Декабрь 2009 - 14:52

Сам себе отвечу.

Я просто сделал проверку на наличие в получаемом значении символов "<a".

$text = data_table("Договоры","id={ID}");
$link = $text["Ссылка на скан"];
$substring = substr($link,0,2);
if($substring=="<a") {
return $link;

}
else 
{ 
$link = preg_replace("/(?<!http:\\/\\/)(www)(\\S+)/si",'http://www\\2', $link);
$link = preg_replace("/(http:\\/\\/)(\\S+)/si",'<a href="http://\\2" target=_new>"Тыц!"</a>',$link);
return $link;
}

Может, кто подскажет косяки/другие варианты, буду благодарен.

#3 Гарифуллин Марат

    Администратор

  • Руководитель ООО "КБ"
  • PipPipPip
  • 121 сообщений
  • Пол:Мужчина

Отправлено 02 Декабрь 2009 - 16:36

Илья, не пугайте остальных такими техническими подробностями. :)

#4 Илья

    Активный участник

  • Пользователи
  • PipPipPip
  • 173 сообщений

Отправлено 03 Декабрь 2009 - 07:27

Я бы наоборот был непротив, чтобы подобных технических подробностей было поболе - всё же программа при должной доработке напильником очень много может. А у меня, как у человека, имеющего крайне мало знаний в PHP напльник выходит кривой. :)

Просмотр сообщенияРазработчик №2 (2.12.2009, 16:36) писал:

Илья, не пугайте остальных такими техническими подробностями. :)


#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Декабрь 2009 - 09:28

Просмотр сообщенияИлья (2.12.2009, 14:14) писал:

Немного не устроило функционирование типа поля "Ссылка"
У нас есть такой тип поля? :) :)

#6 Илья

    Активный участник

  • Пользователи
  • PipPipPip
  • 173 сообщений

Отправлено 03 Декабрь 2009 - 09:40

Совсем туго соображаю... Ну да, в общем, поле текстовое, но если система видит "HTTP://" то делает его активной ссылкой...
Я немножко туплю просто... Особенно по вечерам. :)

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Декабрь 2009 - 10:08

Просмотр сообщенияИлья (3.12.2009, 9:40) писал:

но если система видит "HTTP://" то делает его активной ссылкой...
Боюсь, наша программа еще не настолько интелектуальна :) Если ввести просто http://site.ru, оно в ссылку не превратится. А вот если ввести html код: <a href="http://site.ru">Ссылка</a>, то в этом случае разумеется он отобразится в виде ссылки, т.к. программа выдает любые данные в виде HTML.

#8 Илья

    Активный участник

  • Пользователи
  • PipPipPip
  • 173 сообщений

Отправлено 03 Декабрь 2009 - 11:56

Странно... Меня глючит, чтоль?
Странно...

Но, в общем-то именно это и проделывает приведенный мной скрипт - добавляет к введенному тексту ХТМЛ-код гиперссылки.

#9 k0s

    Активный участник

  • Пользователи
  • PipPipPip
  • 33 сообщений

Отправлено 17 Декабрь 2009 - 22:16

ИМХО это скорее всего уже сам браузер её интерпритирует как ссылку, попробуй открыть в IE 6, там поле будет просто текстом без гиперссылки.





Количество пользователей, читающих эту тему: 10

0 пользователей, 10 гостей, 0 анонимных