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

Форум Регулярные Выражения

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

 

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

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

тема: Обработка url
 
 автор: Buhen   (18.07.2007 в 11:40)   письмо автору
 
 

У меня есть такая строка. Как дописать чтоб бы можно было http:// или/и www. ставить. Не знаю как добавить значения к этой строке

$comment = preg_replace("#\[url=([a-zA-Z0-9]+)\](.*?)\[/url\]#is", '<A HREF="$1">$2</A>', $comment);

Хелп!

   
 
 автор: kasmanaft   (18.07.2007 в 12:27)   письмо автору
 
   для: Buhen   (18.07.2007 в 11:40)
 

Куда ставить? Можно или нужно?

Она у вас и так должно работать...
____________

а... понял в чем дело... попробуйте вот так
#\[url=((?:http://)?[a-zA-Z0-9.]+)\](.*?)\[/url\]#is

   
 
 автор: Buhen   (18.07.2007 в 13:16)   письмо автору
 
   для: kasmanaft   (18.07.2007 в 12:27)
 

Как сделать чтоб можно было вписать не только http:// но и например ya.ru без http:// так удобнее для пользователей а то без http:// не получается и выходит ссылка мой сайт мой сайт/ya.ru а не просто ya.ru

   
 
 автор: Faraon   (18.07.2007 в 13:21)   письмо автору
 
   для: Buhen   (18.07.2007 в 13:16)
 


$comment = preg_replace("#\[url=((?:http://)?[a-zA-Z0-9.]+)\](.*?)\[/url\]#is", '<A HREF="//$1">$2</A>', $comment); 

   
 
 автор: kasmanaft   (18.07.2007 в 13:40)   письмо автору
 
   для: Faraon   (18.07.2007 в 13:21)
 

В таком случае не будет работать с http:// :)
preg_replace("#\[url=(http://)?([a-zA-Z0-9.]+)\](.*?)\[/url\]#is", '<A HREF="http://$2">$3</A>', $comment); 

Другое дело что кроме http еще существуют разные https, ftp, edk (или как оно там) и т.д.
Чтобы это все правильно обработать нужно, наверное, использовать preg_replace_callback с чем-то подобным этому: #\[url=((?:http|ftp|https)://)?([a-zA-Z0-9.]+)\](.*?)\[/url\]#is - смотреть что попадает в первую скобку... если ничего - попробовать добавить к адресу http...

   
 
 автор: Buhen   (18.07.2007 в 13:48)   письмо автору
 
   для: kasmanaft   (18.07.2007 в 13:40)
 

Спасибо вам! Фараон - выбрал твой код. Ну и спасибо конечно же космонавту!

   
 
 автор: kasmanaft   (18.07.2007 в 13:51)   письмо автору
 
   для: Buhen   (18.07.2007 в 13:48)
 

Ы... пожалуйста, конечно... но говоря "В таком случае не будет работать с http:// :)" я имел ввиду код Faraon'a...

   
 
 автор: Buhen   (18.07.2007 в 13:59)   письмо автору
 
   для: kasmanaft   (18.07.2007 в 13:40)
 

Космонавт! Ты написал что надо проверить пападает ли что нибудь из скобки если нет то добавить http:// и использовать preg_replace_callback. Как такое осуществить? если конечно осуществимо?

   
 
 автор: kasmanaft   (18.07.2007 в 14:19)   письмо автору
 
   для: Buhen   (18.07.2007 в 13:59)
 

Хотел уже было отправить в мануал (не зря же я ведь писал про скобку и preg_replace_callback.. регулярное выражение привел, осталось всего ничего), но потом вспомнил, как сам когда-то мучался с callback

<?php
function func($regs
{
    if (
$regs[1] == '')
        
$regs[1] = 'http://';
    return 
'<A HREF="'.htmlspecialchars($regs[1].$regs[2]).'">'.$regs[3].'</A>';
}
echo 
preg_replace_callback("#\[url=((?:http|ftp|https)://)?([^\]]+)\](.*?)\[/url\]#is"'func'$comment);
?>

   
 
 автор: Buhen   (18.07.2007 в 14:38)   письмо автору
 
   для: kasmanaft   (18.07.2007 в 14:19)
 

Супер!! Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! RESPECT!

   
 
 автор: Faraon   (18.07.2007 в 15:36)   письмо автору
 
   для: kasmanaft   (18.07.2007 в 14:19)
 

Вот еще один вариант, правда не знаю насколько удачливый
<?php
if(eregi("http://|https://|ftp://"$comment)){
$s="";
}else{
$s="http://";
}
$comment preg_replace("#\[url=((?:http://|https://|ftp://)?[a-zA-Z0-9.]+)\](.*?)\[/url\]#is"'<A HREF="'.$s.'$1">$2</A>'$comment);
?>

   
Rambler's Top100
вверх

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