Форум -> Сделайте за спасибо! Сделаю за отзыв! -> А помогите с функцией URL |
А помогите с функцией URL |
---|
shadow | Дата: 03.03.2009, в 13:11 | Сообщение №1 |
  Активный участникПользователь №: 520 Сообщений: 100
 | Люди добрые - кто неть может нарисовать простенькую функцию которая преобразует текст в сссылку если там присутствует http:// или ftp://
ну тоесть нужно так:
допустим $var содержит:
Код | 1
| vip-file.com одним файлом <br />
http://vip-file.com/download/.........avi.html<br />
filesmonster.com одним файлом<br />
http://filesmonster.com/download.php.......<br /> |
прогоняем через функцию:
links_url($var );
получаем:
Код | 1
| vip-file.com одним файлом <br />
<a href="http://vip-file.com/download/.........avi.html" >http://vip-file.com/download/.........avi.html</a><br />
filesmonster.com одним файлом<br />
<a href="http://filesmonster.com/download.php....." >http://filesmonster.com/download.php.......</a><br /> |
Кто неть поможет?
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно shadow 04.03.2009 г. в 17:27:25 |
|
|
Serg_pnz | Дата: 03.03.2009, в 15:48 | Сообщение №2 |
  АдминистраторПользователь №: 1 Сообщений: 2243
 | Из моего чата
Код | 1
| $long = explode (" ", $_POST['first_name']);
$_POST['first_name'] = "";
foreach($long as $key => $val) {
unset($m);
if (preg_match('#(^http://(.*?)\.(.*?))#si',$val) AND $autourl==1) {
$_POST['first_name'] .= " <a target=_blank href=".$val.">ссылка</a>";
} elseif (preg_match('#(^www\.(.*?)\.(.*?))#si',$val) AND $autourl==1) {
$_POST['first_name'] .= " <a target=_blank href=http://".$val.">ссылка</a>";
} else {
preg_match_all('#(.){1,50}#si', $val, $m);
$_POST['first_name'] .= " ".implode(" ", $m[0]);
}
} |
Где $_POST['first_name'] - входяже-выходящий текст. | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
patriot | Дата: 04.03.2009, в 04:59 | Сообщение №3 |
  УчастникПользователь №: 349 Сообщений: 92
 | Serg_pnz, а почему не просто preg_replace? |
|
|
Serg_pnz | Дата: 04.03.2009, в 08:41 | Сообщение №4 |
  АдминистраторПользователь №: 1 Сообщений: 2243
 | patriot, а хз почему))
Моя функция кстати еще режет длинные слова на куски по 50 (настраивается) знаков... Может я когда её писал об этой нарезке думал во-первых, а уж о ссылках во второй черёд. | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
shadow | Дата: 05.03.2009, в 10:39 | Сообщение №5 |
  Активный участникПользователь №: 520 Сообщений: 100
 | народ! ну все гораздо проще:
Код | 1
| $text_url="Всякий текс, берем из базы"
$text_url=bb_decode($text_url, $conf['name']); //стандартное декодирование.
$text_url=preg_replace("/(http:\/\/[^\s<]{5,})/","\n<span style=\"display:none;\"><![CDATA[<noindex>]]></span><a href=\"$1\" rel=\"nofollow\" target=\"_blank\">$1</a><span style=\"display:none;\"><![CDATA[</noindex>]]></span>",$text_url); |
преобразует урлы в тексте в нормальные ссылки + фича от меня закрываем ссылки от ботов, и тем самым забиваем на спам....
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно shadow 05.03.2009 г. в 10:40:04 |
|
|
patriot | Дата: 05.03.2009, в 10:55 | Сообщение №6 |
  УчастникПользователь №: 349 Сообщений: 92
 | shadow, не все преобразуется...
такое будет неправильно работать
Код | 1
| http://i.ua
http://www.ponedelnikov.net,.!?%@#'":
HTTP://www.ponedelnikov.net |
и еще... зачем обычный текст преобразовывать в ссылки, а потом закрывать их от индексации? |
|
|
shadow | Дата: 05.03.2009, в 12:09 | Сообщение №7 |
  Активный участникПользователь №: 520 Сообщений: 100
 | Цитата | shadow, не все преобразуется...
такое будет неправильно работать |
за исключением 3го варианта вроде должно...
- но не кто тебе не мешает предложить что то по умнее... 
Цитата | зачем обычный текст преобразовывать в ссылки, а потом закрывать их от индексации? |
- не поленись, зайди ко мне на сайт http://alfafilms.ru/ открой любой фильм, жамкни скачать - увидешь список...
- собственно именно для этого, во первых это раньше были подинклуденные txt файлики, которые я потом загнал в базу...
во вторых уже просто зае***ли тупые блондинки с криками как скачать... уже даже капчу прикрутил к уведомлению о нескачивании, нет пля, все равно в день по 30 сообщений набивается о нескачивании - только потому что до них не доходило скопировать ссылку и вставить в браузер...
а теперь они автоматом все (урлы) стали ссылками...
ну и соответственно от ботов прикрыл... думаю сам должен понимать как может себя повести яша если будет видеть много страниц с десятками внешних ссылок подряд.... |
|
|
shadow | Дата: 05.03.2009, в 12:28 | Сообщение №8 |
  Активный участникПользователь №: 520 Сообщений: 100
 | Цитата | shadow, не все преобразуется...
такое будет неправильно работать
http://i.ua
http://www.ponedelnikov.net,.!?%@#'":
HTTP://www.ponedelnikov.net |
ну пример 1 унриал,
пример 2 работает,
пример 3 добавляем: Цитата | $text_url=preg_replace("/(HTTP:\/\/[^\s<]{5,})............ |
|
|
|
Serg_pnz | Дата: 05.03.2009, в 12:42 | Сообщение №9 |
  АдминистраторПользователь №: 1 Сообщений: 2243
 | Цитата | HTTP://www.ponedelnikov.net |
Господа! Не забывайте про модификаторы! В частности i
Тогда будет работать и Цитата | HttP://www.ponedelnikov.net |
| Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
patriot | Дата: 05.03.2009, в 21:35 | Сообщение №10 |
  УчастникПользователь №: 349 Сообщений: 92
 | Serg_pnz, и я о том же )
shadow, ты не подумай - я не умничаю..
насчет 1. у тебя может и не будет такого адреса, но функция-то общая )
2. в ссылку преобразует.. но ссылка будет рабочая? ситуация, когда ссылка в конце предложения и после нее без пробела знак препинания...
3. Serg_pnz написал уже )
про ссылки теперь понятно. разумно.
а здесь удобно отлаживать регулярки http://gskinner.com/RegExr/
я там такое вот получил
Код | 1
| \b(http://[\w.]+)(/?[\w?]+[\w?.,&=/-]*)?\b |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно patriot 07.03.2009 г. в 02:36:59 |
|
|
shadow | Дата: 06.03.2009, в 14:59 | Сообщение №11 |
  Активный участникПользователь №: 520 Сообщений: 100
 | Цитата | \b(http://[\w.]+)(/?[\w?]+[\w?.,&=/-]*)?\b |
500 ошибу выдает!
для тестирования:
Код | 1
| <?php
$links="<div class=\"small\">=== vip-file.com ===<br />
http://vip-file.com/download/7435f5509246/hellboy-2-zolotaya-armiya---the-golden-army-1.36.avi.html<br /><br />
=== filesmonster.com ===<br />
http://filesmonster.com/download.php?id=5a9b55251</div>\n
http://i1.ua <br>\n
http://www.ponedelnikov.net,.!?%@#'\": <br>\n
HTTP://www.ponedelnikov.net <br>\n
";
echo "$links";
echo "<br><br>\n";
$links2=preg_replace("/(http:\/\/[^\s<]{5,})/","<a href=\"$1\">$1</a>",$links);
echo "$links2";
?> |
|
|
|
patriot | Дата: 07.03.2009, в 02:35 | Сообщение №12 |
  УчастникПользователь №: 349 Сообщений: 92
 | PHP - Код | 1 2 3
| <?php $links2=preg_replace("`\b(http://[\w.]+)(/?[\w?]+[\w?.,&=/-]*)?\b`is","<a href=\"$1$2\">$1$2</a>",$links); ?> |
|
|
|
|
Вы не можете ответить в тему анонимно, пожалуйста, войдите или зарегистрируйтесь!
|