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

Разное

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

 

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

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

тема: [url="адрес"]описание[/url]
 
 автор: Евгений Петров   (14.09.2005 в 20:17)   письмо автору
 
 

Т.к. тему в разделе php удалили по всей видимости за спам в пером посте, то логично было бы создать новую тему. Cheops почему бы не заменить теги
[ url ][ /url ] на (см сабж.)?

   
 
 автор: cheops   (14.09.2005 в 21:13)   письмо автору
 
   для: Евгений Петров   (14.09.2005 в 20:17)
 

Можно, где-то на форуме имеется и моё решение этой проблемы и преобразование обычных ссылок в этот формат. Только необходимо обеспечить обратную совместимость с существующими тэгами.

   
 
 автор: Akira   (14.09.2005 в 21:24)   письмо автору
 
   для: cheops   (14.09.2005 в 21:13)
 

Я уже сделал совместимость. Только вы пропустили наверное, она у меня на форуме работает и довольно успешно.

   
 
 автор: cheops   (14.09.2005 в 21:49)   письмо автору
 
   для: Akira   (14.09.2005 в 21:24)
 

Может пропустил :))), а как сделали?

   
 
 автор: Akira   (14.09.2005 в 21:56)   письмо автору
 
   для: cheops   (14.09.2005 в 21:49)
 

http://www.softtime.ru/forum/read.php?id_forum=2&id_theme=2776&page=2

<?
################## Start SmartUrl
if (preg_match("/\[url\]\s*(\S*)\s*\[\/url\]/i"$postbody )) # [url][/url] Проверяем на правельность заполнения, если не указано имя то используем в его качестве ссылку]
{
    if (
preg_match("/([ht|f]tp:\/\/)/i"$postbody )) # Есть ли протокол? если нет добавляем http://
        
{
            
$postbody=preg_replace("/\[url\]\s*(\S*)\s*\[\/url\]/i",'<a target="_blanc" href="http://\\1">\\1</a>',$postbody); # Вывод ссылки без указания протокола
        
}
    else 
        {
            
$postbody=preg_replace("/\[url\]\s*(\S*)\s*\[\/url\]/i",'<a target="_blanc" href="http://\\1">http://\\1</a>',$postbody); # Вывод ссылки с указанием протокола
        
}
}
else
{
    if (
preg_match("/\[url=\s*(\S*)\s*\]\s*\[\/url\]/i"$postbody )) # [url=][/url]Проверяем на правельность заполнения, если не указано имя то используем в его качестве ссылку
    
{
        if (
preg_match("/([ht|f]tp:\/\/)/i"$postbody ))# Есть ли протокол? если нет добавляем http://
            
{
                
$postbody=preg_replace("/\[url=\s*(\S*)\s*\]\s*(\S*)\s*\[\/url\]/i",'<a target="_blanc" href="http://\\1">\\1</a>',$postbody);# Вывод ссылки без указания протокола
            
}
        else
            {
                
$postbody=preg_replace("/\[url=\s*(\S*)\s*\]\s*(\S*)\s*\[\/url\]/i",'<a target="_blanc" href="http://\\1">http://\\1</a>',$postbody); # Вывод ссылки с указанием протокола
            
}
    }
    else 
    {
            if (
preg_match("/([ht|f]tp:\/\/)/i"$postbody )) # Есть ли протокол? если нет добавляем http://
            
{
                
$postbody=preg_replace("/\[url=\s*(\S*)\s*\](.*)\[\/url\]/i",'<a target="_blanc" href="http://\\2">\\2</a>',$postbody);# Вывод ссылки без указания протокола
            
}
            else
            {
                
$postbody=preg_replace("/\[url=\s*(\S*)\s*\]\s*(.*)\s*\[\/url\]/i",'<a target="_blanc" href="http://\\2">\\2</a>',$postbody); # Вывод ссылки с указанием протокола
            
}
    }
}
################## End SmartUrl
?>

http://phpcom.ru/forum/read.php?id_forum=1&id_theme=3&id_post=9
Тестирование на моем сайте.

   
 
 автор: cheops   (14.09.2005 в 22:07)   письмо автору
 
   для: Akira   (14.09.2005 в 21:56)
 

Ничего себе... а если в теме штук 20 ссылок, то такую кучу регулярных выражений нужно будет перепахать... А нельзя как-нибудь уменьшить число вызовов preg_replace при помощи | или ещё как-то?

   
 
 автор: Akira   (14.09.2005 в 22:11)   письмо автору
 
   для: cheops   (14.09.2005 в 22:07)
 

20 штук скрипт будет обрабатывать одинаковых тегов.
Т.е. новый и старый стиль нельзя в одном месте использовать. И потом я не спец по рег. выражениям.

   
 
 автор: Akira   (14.09.2005 в 22:18)   письмо автору
 
   для: Akira   (14.09.2005 в 22:11)
 

Да кстате, вы не заметили условия? Там всего один preg_replace работает.

   
 
 автор: Евгений Петров   (14.09.2005 в 23:28)   письмо автору
 
   для: Akira   (14.09.2005 в 22:18)
 

А если так попробовать:
<?
  $postbody 
"Перейди по [url=\"http://chat.ru/liteforum/forum/addthemeform.php?id_forum=1\"]этой[/url] ссылке или сюда: [ url]http://chat.ru/liteforum/forum/addthemeform.php?id_forum=1[/url]";
  
// не забудьте пробел убрать между "[" и "url" когда будете тестировать :)
  
$pattern = array
  (
    
"/\[url[\s]*=[\s]*[\'\"]?(http:\/\/)?(www\.)?([-0-9a-z_\.]+\.[0-9a-z]{2,3})\/?([^\'\"]*)\/?[\'\"]\](.*)\[\/url\]{1}/iU",
    
"/\[url\]\s*(\S*)\s*\[\/url\]/si"
  
);
  
$relpacement = array
  (
    
"<a href=\"http://$\{2}$\{3}/$\{4}\" target=_blank>$\{5}</a>",
    
"<a href=\"\${1}\" target=_blank>\${1}</a>"
  
);
  echo 
preg_replace($pattern,$relpacement,$postbody);
?>

   
 
 автор: Akira   (15.09.2005 в 00:00)   письмо автору
 
   для: Евгений Петров   (14.09.2005 в 23:28)
 

Опять не фига не получаеться по вашему коду. Запускал в зенде.

   
 
 автор: Евгений Петров   (15.09.2005 в 00:21)   письмо автору
 
   для: Akira   (15.09.2005 в 00:00)
 

В каком смысле не получается?

   
 
 автор: Akira   (15.09.2005 в 00:31)   письмо автору
 
   для: Евгений Петров   (15.09.2005 в 00:21)
 

в прямом не обрабатывает :) Счас уже поздно, может завтра точнее посмотрю и скажу.

   
 
 автор: Евгений Петров   (15.09.2005 в 00:37)   письмо автору
 
   для: Akira   (15.09.2005 в 00:31)
 

OK, а ты пробел убрал в [url] я его специально поставил чтоб он не обрабатывался?

   
 
 автор: Akira   (15.09.2005 в 00:53)   письмо автору
 
   для: Евгений Петров   (15.09.2005 в 00:37)
 

ах-ха точно вот оно что :) Это безусловно лучше чем мой вариант :)

   
 
 автор: Евгений Петров   (15.09.2005 в 23:32)   письмо автору
 
   для: Akira   (15.09.2005 в 00:53)
 

Ну так как? Будет у нас новый супер-тег? :)))

   
 
 автор: Akira   (16.09.2005 в 00:14)   письмо автору
 
   для: Евгений Петров   (15.09.2005 в 23:32)
 

я как стАрожил говорю.
Нет.

   
 
 автор: Евгений Петров   (16.09.2005 в 00:22)   письмо автору
 
   для: Akira   (16.09.2005 в 00:14)
 

[вздыхаю] :)

   
Rambler's Top100
вверх

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