Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сокращение содержимого ссылки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Esigns
Отправлено: 16 Декабря, 2014 - 22:13:23
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Привет.

Нужно найти в тексте урл-адреса и делать из них ссылки. К примеру из строки "http://forum.php.su/длинный_урл" нужно сделать в <a href="http://forum.php.su/длинный_урл">http://forum.php.su/длин.....</a>, причем содержимое тега <a> нужно ограничить несколькими символами и если существует превышение(скжем урл был длиннее 50 символов) обрезать ее на 50 символов и вставить "..."

Решение 1 части задачи я нашел:http://danfa[dot]ru/viewtopic.php?f=8&t=1288
Вторую часть задачи не могу сообразить.
Спасибо
 
 Top
kotyara1979
Отправлено: 18 Декабря, 2014 - 04:38:35
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Не очень изящно, наверное, но работает.
PHP:
скопировать код в буфер обмена
  1.  
  2. $text = 'Форум Веб Мастеров находится по адресу:  http://danfa.verylonglonglonglonglonglonglonglonglongurl.ru/';
  3. $text = preg_replace('/http(s)?:\/\/[^\s]+/', '<a href="$0">$0</a>', $text);
  4. echo $text;
  5. preg_match_all('/>http(s)?:\/\/[^\s]+</',$text,$arr);
  6. foreach($arr[0] as $val) if(strlen($val)-2>50) $text = str_replace($val,substr($val,0,51).'...<',$text);
  7. echo '<br>'.$text;
  8.  


-----
Сделать можно все. Главное одеть каску.
 
 Top
skiphog
Отправлено: 18 Декабря, 2014 - 09:28:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Дек. 2014  
Откуда: Киров, Россия


Помог: 11 раз(а)




PHP:
скопировать код в буфер обмена
  1. //Какая-то строка
  2. $text = 'Форум Веб Мастеров находится по адресу:  http://danfa.verylonglonglonglonglonglonglonglonglongurl.ru/ еще какой-то текст';
  3.  
  4. /**
  5.  * @param $str string строка, в которой нужно заменить URL
  6.  * @param $strip int количество символов для обрезания анкора (по умолчанию = 50)
  7.  * @return string
  8.  */
  9. function getReplaceUrl($str,$strip = 50) {
  10.   if(preg_match_all('/http(s)?:\/\/[^\s]+/',$str,$arr)) {
  11.     foreach($arr[0] as $item) {
  12.       $replace = '<a href="'.$item.'">'.substr($item,0,(int)$strip).'...</a>';
  13.       $str = str_replace($item,$replace,$str);
  14.     }
  15.   }
  16.   return $str;
  17. }
  18.  
  19. echo getReplaceUrl($text);
  20.  
  21. /*
  22.         Еще один вариант. Заменить анкор на что-то типа "Смотрите тут" или подобное
  23. */
  24. /**
  25.  * @param $str string строка, в которой нужно заменить URL
  26.  * @return string
  27.  */
  28. function getReplUrl($str) {
  29.   return preg_replace('/http(s)?:\/\/[^\s]+/','<a href="$0">Смотрите тут</a>',$str);
  30. }
  31.  
  32. echo getReplUrl($text);

(Отредактировано автором: 18 Декабря, 2014 - 10:12:30)

 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB