Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> делаем линки кликабильными из [URL][/URL] 
V
    Опции темы
kpuknet
Дата 1.3.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 28.10.2005

Репутация: нет
Всего: нет



приветствую всех.
являяясь владельцем одного из развлекательно\варезных сайтов появилась необходимость преобразовывать несколько линков из некликабельных в кликабельные. 

Т.к. неудобно каждую ссылку писать в [URL]http://www.1.ru/[URL]  [URL]http://www.2.ru/[URL] 

Поэтому лучше и удобнее в таком виде [MURL]
http://www.1.ru/
http://www.2.ru/
http://www.3.ru/
[/MURL]

Это должно преобразовываться в 
Код

<a href="http://www.1.ru/">http://www.1.ru/</a>
<a href="http://www.2.ru/">http://www.2.ru/</a>
<a href="http://www.3.ru/">http://www.3.ru/</a>


Логика есть, не знаю как сделать технически.
1. Сначала ищем в коде [MURL][/MURL] (эта конструкция названа произвольно, типа Multi URL)
2. Берем содержимое внутри этого.
3. Считаем количество вхождений http://
4. Преобразовываем.

Помогите технически это сделать. Спасиб заранее

PM MAIL WWW   Вверх
MefIsT0feL
Дата 1.3.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 27.2.2007

Репутация: нет
Всего: нет



Можно было бы ссылки между [MURL] [/MURL] разделять точкой с запятой или запятой и потом с помощью split-а или explode получить массив ссылок которые заменять на <a href=""></a>

Это сообщение отредактировал(а) MefIsT0feL - 1.3.2007, 12:37
PM MAIL ICQ   Вверх
kpuknet
Дата 1.3.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 28.10.2005

Репутация: нет
Всего: нет



А просто чаще ссылки встречаются именно в такой последовательности и на файлообменниках, когда файлы льешь - тоже выдают в таком виде: каждая ссылка на новой строке
PM MAIL WWW   Вверх
MefIsT0feL
Дата 1.3.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 27.2.2007

Репутация: нет
Всего: нет



Тогда разделяй полученную строку explode-ом типа :
Код

$arr = explode("\n",$array_of_links);

а потом полученные элементы массива заменяй на <a href=""></a>
 smile 

Это сообщение отредактировал(а) MefIsT0feL - 1.3.2007, 13:46
PM MAIL ICQ   Вверх
corpsehunter
Дата 1.3.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 24.2.2007

Репутация: нет
Всего: 3



Пробразовывать с помощью регулярных выражений: каждая ссылка начинается на "http://" и заканчивается на "точка, 2 или 3 символа и необязательный слэш".
Примерно такое:
Код

$nestxt = eregi_raplace("(http:\/\/([a-z0-9-_]+\.)+([a-z]{2,3})(\/)?)","<a href='"+$1+"'>"+$1+"</a>", $text)

Вроде так...
--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
kpuknet
Дата 1.3.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 28.10.2005

Репутация: нет
Всего: нет



Во, спасиб... приду попробую дома... Только ещё может быть 4-5 символов после точки (html, phtml)
Но именно это я и имел ввиду
PM MAIL WWW   Вверх
corpsehunter
Дата 1.3.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 24.2.2007

Репутация: нет
Всего: 3



Если ты хочешь, чтобы работало для ссылок http://бла.бла.ру/бла/бла.хтмл, то вот, подкорректировал (он был рассчитан только для http://бла.бла.ру/):
"(http:\/\/([a-z0-9-_]+\.)+([a-z]{2,3})((\/)|((\/[a-z0-9-_]+)+))?((\/)|(\/[a-z0-9-_]+\.[a-z0-9]+))?)"

Выглядит, конечно, громоздко, но учел, вроде, все возможные варианты.
Проверял ее на яве, но синтаксис почти одинаковый...
--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
kpuknet
Дата 2.3.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 28.10.2005

Репутация: нет
Всего: нет



Всё разобрался.

corpsehunter, рег выражения твои че-т не пахали. Т.к. не силен в Рег выражениях - исправить ничего не смог. Нашел в нете.


В итоге вот что у меня получлось (полностью готовый код)

Код

<?php
$text = "
[murl]http://www.1.ru/1313.htl
http://www.2.ru/
http://www.3.ru/[/murl]
[murl]http://www.5.ru/1313.htl
http://www.6.ru/
http://www.7.ru/[/murl]";

$text2="";
    
    
    
$res=preg_match_all("#\[murl\](.+?)\[/murl\]#is",$text,$text1);

foreach ($text1[1] as $el){
$text2 .= preg_replace("#(https?|ftp)://\S+[^\s.,>)\];'\&quot;!?]#", '<a href="\\0">\\0</a>', $el);
}

echo $text2;

?>


Добавлено @ 11:43 
Кста, в догонку, сайт где нашел рег выражение: http://www.pcre.ru/
PM MAIL WWW   Вверх
kpuknet
Дата 2.3.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 28.10.2005

Репутация: нет
Всего: нет



Блин возникла маленькая проблема....

если вот такой текст, есть помимо есть ещё текст
Код

$text = "ФФФФ
[murl]http://www.1.ru/1313.htl
http://www.2.ru/
http://www.3.ru/[/murl]
[murl]http://www.5.ru/1313.htl
http://www.6.ru/
http://www.7.ru/[/murl] 
ААААААААА";


то как вывести этот текст с кликабельными ссылками. 
Что надо дополнить в мой текст.
PM MAIL WWW   Вверх
kpuknet
Дата 2.3.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 28.10.2005

Репутация: нет
Всего: нет



ссори кого потревожил.

Вот решение:

Код

<?php
$text = " aaa [murl]http://www.1.ru/1313.htl
http://www.2.ru/
http://www.3.ru/[/murl]
[murl]http://www.5.ru/1313.htl
http://www.6.ru/
http://www.7.ru/[/murl] ddd ";


    

    
$res=preg_match_all("#\[murl\](.+?)\[/murl\]#is",$text,$text1);

foreach ($text1[1] as $el){

$find[] = "[murl]".$el."[/murl]";
$replace[]=   preg_replace("#(https?|ftp)://\S+[^\s.,>)\];'\&quot;!?]#", '<a href="\\0">\\0</a>', $el);

}

$text = str_replace($find,$replace,$text);
    
 
echo $text;

?>


PM MAIL WWW   Вверх
mishaSL
Дата 2.3.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 9
Всего: 54



Все это можно сделать одним регулярным выражением:
Код

<?php
$text = "ФФФФ
[murl]http://www.1.ru/1313.htl
http://www.2.ru/      asdasd
http://www.3.ru/[/murl]
[murl]http://www.5.ru/1313.htl
http://www.6.ru/
http://www.7.ru/[/murl]
ААААААААА";

$reg = "#((http|https|ftp)://[^\s,>]+)(?=[^\[\]]*\[/murl\])#is";
$res=preg_replace($reg, '<a href="$1">$1</a>',$text);
print str_replace(array('[murl]', '[/murl]'), '', $res);
?>



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0888 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.