Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите укоротить ссылку
 
 автор: irr   (30.03.2010 в 01:14)   письмо автору
 
 

пользуюсь таким регулярным выражением для преобразования url в ссылку

<?php
$text 
preg_replace("/(http:\/\/)(\S+)/i","<a href=\"\\0\">\\0</a>",$text);
?>

хочется задать условие, что если url длиннее скажем 30 символов, то на выходе чтобы было бы так:
<?php
$text 
preg_replace("/(http:\/\/)(\S+)/i","<a href=\"\\0\">первые 30 символов от url[...]</a>",$text);
?>


как бы отрезать эти первые 30 символов от \\0?
подскажите плиз!

  Ответить  
 
 автор: cheops   (30.03.2010 в 01:49)   письмо автору
 
   для: irr   (30.03.2010 в 01:14)
 

Тут удобно воспользоваться функцией обратного вызова
<?php 
  $text 
"А вот ссылка на http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=72906&page=1 тему"
  
$text preg_replace_callback("/(http:\/\/)(\S+)/i""urlreplace"$text); 
  echo 
$text;
  function 
urlreplace($out)
  {
    if(
strlen($out[0]) > 30)
      return 
"<a href=\"{$out[0]}\">".substr($out[0], 030)."...</a>";
    else 
      return 
"<a href=\"{$out[0]}\">{$out[0]}</a>";
  }
?>

  Ответить  
 
 автор: irr   (02.04.2010 в 05:40)   письмо автору
 
   для: cheops   (30.03.2010 в 01:49)
 

спасибо, работает! то что надо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования