[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск и Замена URL в тексте
ИНСИ
С рег. выражениями у меня на ВЫ, поэтому нужна ваша помощь.

Имеется текст, который заполняется пользователем. Необходимо найти все ссылки которые он указал и поместить в тег <a>. При этом длинные ссылки укоротить.

Как пример, смотрим на наш форум: https://www.google.com/webhp?sourceid=chrom...iw=1366&bih=667

В гугле искал, нормальный вариант не нашел. Буду благодарен за готовый код smile.gif



Спустя 4 часа, 48 минут, 21 секунда (31.05.2012 - 03:01) walerus написал(а):
ИНСИ - Можно уточнить в каком гугле именно?, тут то и искать нечего, написал(попытался найти в гугле, 100% она там есть) регулярку которая найдет все http://domen.com, запихнул их в ахреф, попутно применяя строковые функции, замера длинны и обрезки.

Спустя 5 часов, 54 минуты, 29 секунд (31.05.2012 - 08:56) ИНСИ написал(а):
Цитата
Можно уточнить в каком гугле именно?

Ссылку скинул. Прошелся по всем ссылкам, нашел пару вариантов, но у всех есть недочеты, баги. Где-то не учитывает ссылку с параметрами GET, где-то не учитывает домен mail.ru. В общем, нормальную регулярку не смог найти.

Спустя 7 часов, 16 минут, 6 секунд (31.05.2012 - 16:12) ИНСИ написал(а):
Блин, неужели никто с регулярками не дружит? Дед мороз ушел и все?! smile.gif

Спустя 2 часа, 15 минут, 5 секунд (31.05.2012 - 18:27) walerus написал(а):
Поиск

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

p.s.
Цитата
Буду благодарен за готовый код
= 500рублей. biggrin.gif

Спустя 1 час, 27 минут, 6 секунд (31.05.2012 - 19:54) ИНСИ написал(а):
Цитата
если все таки опять лень - вот ссыла

Ты сам проверял на валидность их регулярки? Попробуй потестить ...

Цитата
= 500рублей. 

Боже мой .... Сам посижу и добью регулярки. Это не проблема, я думал что у кого-то уже есть готовый скрипт и поделится. Но оказалось, что тут "бизнесмены" сидят )

Спустя 16 часов, 2 минуты, 21 секунда (1.06.2012 - 11:57) walerus написал(а):
ИНСИ Вот только без обид, не надо говорить что все тут "бизнесмены", ты вроде не первый день на форуме и должен знать что готовый код, просто так никто не выложит, зачем кому то тратить свое время, писать за тебя твой код? каждый труд должен оплачиваться, если у самого нет времени или способностей. Здесь, на форуме помогают решить проблему, глядя на твои ошибки в коде и никак иначе, если бы было готовое решение у меня, то может бы и выложил сразу, что и делаю, в большинстве случаев. Но раз никто не откликнулся кроме меня, то наверно ни у кого нет готового решения, да и решение то, - пол часа с перекурами...

Сам не проверял регулярки, но смысл то понятен, что я нашел сразу ответы на твои вопросы в поиске, ты просто даже не смог ими воспользоваться. Так вот если тебе лень или "в лом" или ты не знаешь, то кто то должен за тебя это сделать, если оно конечно тебе нужно.

p.s. 500 рублей была шутка, я хотел написать 1000 biggrin.gif

Я думал что в "Группа: Эксперт" - с регулярками и юмором такого плана, проблем не должно быть.

Спустя 21 минута, 3 секунды (1.06.2012 - 12:18) killer8080 написал(а):
$t ='text text
http://phpforum.ru/index.php?showtopic=61879&hl=
text text text'
;
$t = preg_replace_callback(
'#(?:^|\s)(https?://\S+)#i',
create_function('$m', '
return "<a href=\"$m[1]\">$m[1]</a>";
'
),
$t
);
echo '<pre>'.htmlspecialchars($t).'</pre>';

только подкорректируй анонимку, чтоб укорачивать текст ссылки.

Спустя 6 часов, 6 минут, 23 секунды (1.06.2012 - 18:24) ИНСИ написал(а):
Цитата
ты вроде не первый день на форуме и должен знать что готовый код, просто так никто не выложит

Я выкладываю. И как пример, смотри выше код. Не все такие как ты.

Цитата
что я нашел сразу ответы на твои вопросы в поиске, ты просто даже не смог ими воспользоваться

Читай выше мои комменты. Таких регулярок, которую ты предоставил я нашел уйма. Не надо утрировать всю ситуацию.

Цитата
Я думал что в "Группа: Эксперт" - с регулярками и юмором такого плана, проблем не должно быть.

Быть может мне еще надо знать: Как шатлы настраивать, чтобы запускать их в космос?

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

Спорить дальше с тобой не вижу смысла если честно. Просто поболтать можно в другой теме. Если не можешь написать код - читай другие темы плз. Спасибо.

killer8080 спасибо за код, ща буду настраивать.

Спустя 1 час, 45 минут, 33 секунды (1.06.2012 - 20:10) ИНСИ написал(а):
Немного подправил регулярку и дописал урезку ссылки. Если кому нужно, Бесплатно :) Получилось так:
function hrefCallback($data, $symb = '...', $sizeSymb = 40, $sizeEnd = 7) {
mb_internal_encoding('UTF-8');

$href = $data[2] == 'www.'
? 'http://' . $data[1]
:
$data[1]
;


$name = mb_strlen($data[1]) > $sizeSymb
? mb_substr($data[1], 0, ($sizeSymb - (mb_strlen($symb) + $sizeEnd))) . $symb . mb_substr($data[1], -$sizeEnd)
:
$data[1]
;


return " <a href=\"$href\" target=\"_blank\">$name</a> ";
}

$text = 'Ссылки: http://phpforum.ru/index.php?showtopic=61879&hl= ftp://mail.ru http://mail.ru www.mail.ru http://новый-сайт.рф - www.новый-сайт.рф';

echo preg_replace_callback(
'#(?:^|\s)((((?:http|ftp)://)|www.)\S+)#i',
'hrefCallback',
$text
);

Спустя 7 часов, 49 минут, 9 секунд (2.06.2012 - 03:59) walerus написал(а):
ИНСИ
Цитата
Цитата
ты вроде не первый день на форуме и должен знать что готовый код, просто так никто не выложит

Я выкладываю. И как пример, смотри выше код. Не все такие как ты.

Плохо прочитал, то что я написал, я тоже выкладываю код, если он у меня есть, не надо меня тут к меньшинствам приравнивать...

Цитата
Цитата
Я думал что в "Группа: Эксперт" - с регулярками и юмором такого плана, проблем не должно быть.

Быть может мне еще надо знать: Как шатлы настраивать, чтобы запускать их в космос?

У каждого эксперта есть свои сильные и слабые стороны. Моя регулярки.
Был бы форум про космос или шаТТлы, в группе Эксперт, возможно и нужно было бы знать, иначе какой же эксперт? - уверенный пользователь, я бы сказал. А про слабые стороны, соглашусь, всего знать никому не дано.

Цитата
Спорить дальше с тобой не вижу смысла если честно. Просто поболтать можно в другой теме. Если не можешь написать код - читай другие темы плз. Спасибо.
А я как то и не спорил, - констатировал факт бездействия. Доказательства - обычный запрос в гугл "обрезать длинные ссылки PHP", на первой странице, сразу ответ, - "Посмотреть", не 100% именно то что у тебя в итоге получилось, но смысл тот же, там массив со ссылками, у тебя текст, из текста найти ссылки, я думаю не составило бы труда. Повторяться не хочется, но большинство хотят готовое.

Код написать могу, но!, на форуме как бы помогают решить проблему, а не сделать все за тебя, п.п 2.3.d, гласит
Цитата
наиболее полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.
Я почему то не нашел твоих действий, в поиске решения данного вопроса, то что в гугле ты не нашел, это не решение, да и примеров никаких не было.

p.s. Можно я сам буду решать, какие темы мне читать? - Спасибо.

Спустя 5 часов, 25 минут, 37 секунд (2.06.2012 - 09:24) ИНСИ написал(а):
walerus что же... Мы можем долго "пустословием" заниматься. Я уже все тебе сказал.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.