Укорачивание URL ...

M
На сайте с 20.08.2004
Offline
376
663

Хочу как на этом форуме сделать короткие урл, но не знаю в какую сторону копать что бы не городить огород. Думаю есть возможжность использовать какие-то фоматировщики, если можно так назвать, строк.

$text = preg_replace("/\[url\](.*?)\[\/url\]/i", '<a href="$1">$1</a>', $text); // замена

Как пользоваться функцией substr + preg_replace_callback и без вариантов?

к примеру

http://yandex.ua/yandsearch?rdrnd=956488&text=%D1%8D%D1%82%D0%BE%20%D1%81%D0%B0%D0%BC%D1%8B%D0%B9%20%D0%BE%D0%B1%D1%8B%D1%87%D0%BD%D1%8B%D0%B9%20%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D1%8B%D0%B9%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%20%D0%B4%D0%BB%D1%8F%20%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8%20%D0%BD%D0%B0%20%D1%84%D0%BE%D1%80%D1%83%D0%BC%D0%B5&lr=143&redircnt=1437709543.1

спасибо.

отец сыночка, лапочки дочки и еще одного сыночка
Ragnarok
На сайте с 25.06.2010
Offline
226
#1

понял......

//TODO: перестать откладывать на потом
M
На сайте с 20.08.2004
Offline
376
#2

Я спрашивал, есть ли альтернатива substr+preg_replace_callback при преобразовании длинных урлов из текста в короткие, как на этом форуме.

TF-Studio
На сайте с 17.08.2010
Offline
334
#3

в приведенном примере - лишь середина анкора режется.

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
M
На сайте с 20.08.2004
Offline
376
#4
TF-Studio:
в приведенном примере - лишь середина анкора режется.

решение вот такое, но я спрашиваю, может есть другие решения

function short_url($matches){
$len = strlen($matches[1]);
if ($len > 100) $url_text = substr($matches[1], 0, 25) . "...".substr($matches[1], -10, 10);
else $url_text = $matches[1];
return ' <nobr><a href="'.$matches[1].'" target=_new>'.$url_text.'</a></nobr> ';
}
$text = preg_replace_callback("/\[url\](.*?)\[\/url\]/i", 'short_url', $text); // замена
K
На сайте с 03.06.2015
Offline
45
#5

Такая же тема http://stackoverflow.com/questions/15639590/using-preg-replace-to-truncate-url

ключевые слова поискать еще php truncate middle url

MYSQL PHP JS HTML CSS SEO TXT США СССР
M
На сайте с 20.08.2004
Offline
376
#6
kostyanet:
Такая же тема http://stackoverflow.com/questions/15639590/using-preg-replace-to-truncate-url

ключевые слова поискать еще php truncate middle url

спасибо. кое что для себя интересного увидел!

J
На сайте с 20.02.2014
Offline
120
jkm
#7

Конструкция (?!\[/url\]).)+ захватывает по одному символу, пока не встретит .

https://regex101.com/r/uG2yC2/1


$regex = '~\[url\](((?:(?!\[/url\]).){25})(?:(?!\[/url\]).){11,}(?<=(.{10})))\[/url\]~';
$text = preg_replace($regex, '<a href="\1">\2...\3</a>', $text);

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий