Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Работа с ссылками!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Работа с ссылками!
Craken
Отправлено: 11 Июня, 2010 - 12:47:54
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Приветствую Вас!
Я видел уже подобные темы, но все же немножко не то!
Нужна помощь в замене ссылок при выводе текста....
Пример:
Текст:
CODE (htmlphp):
скопировать код в буфер обмена
  1. My site [url=http://site.com]here[/url], bla-bla-bla!


Кстати.. ссылки могут быть и без использования тэгов [url]
А вот как должен выглядеть текст после замены:
CODE (htmlphp):
скопировать код в буфер обмена
  1. My site [url=http://mysite.ru/link.php?=site.com]here[/url], bla-bla-bla!


Ну и желательно чтобы кроме самой ссылки нечего в тексте больше не менялось Улыбка
Все Огромное Спасибо!

(Отредактировано автором: 11 Июня, 2010 - 12:48:23)

 
 Top
Joo
Отправлено: 11 Июня, 2010 - 13:44:05
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2009  
Откуда: Казахстан


Помог: 1 раз(а)




Вот так например:
PHP:
скопировать код в буфер обмена
  1. $result = preg_replace('/\b(https?:\/\/[-A-Z0-9.]+(?:\/[-A-Z0-9+&@#\/%=~_|!:,.;]*)?(?:\?[A-Z0-9+&@#\/%=~_|!:,.;]*)?)\b/im', 'http://mysite.ru/link.php?=$1', $content);


-----
"Им будет не просто, тем кто полагается на истину авторитета, вместо ​того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог
 
 Top
JustUserR
Отправлено: 11 Июня, 2010 - 16:22:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Joo пишет:
Вот так например:
С точки зрения регулярного выражения это скорее всего работает верно - но значение обратной ссылки лучше пропустить через функцию urlencode чтобы она не содержала лишних символов которые не предусматриваются в web-пути


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Joo
Отправлено: 11 Июня, 2010 - 17:40:22
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2009  
Откуда: Казахстан


Помог: 1 раз(а)




JustUserR пишет:
значение обратной ссылки лучше пропустить через функцию urlencode чтобы она не содержала лишних символов которые не предусматриваются в web-пути


Да, я согласен. Тогда возможно использовать preg_replace_callback вместо preg_replace


-----
"Им будет не просто, тем кто полагается на истину авторитета, вместо ​того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог
 
 Top
JustUserR
Отправлено: 13 Июня, 2010 - 13:36:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Joo пишет:
Да, я согласен. Тогда возможно использовать preg_replace_callback вместо preg_replace
Да вполне согласен Хотя в некоторых случаях лучше использовать обычную замену без встроенной callback-функции - и ее вызов только для отдельных фрагментов строки типа f('$1') и конкатенации с соответствующей строкой замены - такой способ хорош в том случае если функция f сложная и ее выполнение требует достаточного времени - и не имеет смысл запускать ее для каждой из обратных ссылок


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Ch_chov
Отправлено: 13 Июня, 2010 - 13:51:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
ыражения это скорее всего работает верно - но значение обратной ссылки лучше пропустить через функцию urlencode чтобы она не содержала лишних символов которые не предусматриваются в web-путиНужна помощь в замене ссылок при выводе текста

Почему нельзя взять модуль bb кода из любого форума и не посмотреть как там сделано?
 
 Top
JustUserR
Отправлено: 13 Июня, 2010 - 13:57:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Ch_chov пишет:
Почему нельзя взять модуль bb кода из любого форума и не посмотреть как там сделано?
Сделать можно всегда многими спобосами - просто при указании реального web-пути в ссылке необходимо производить его предварительное urlecnode-кодирование - особенно это полезно делать в целях унификации кодировки если запрос идет с 3-его web-сервера который имеет иную кодировку по-умолчанию


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Craken
Отправлено: 08 Сентября, 2010 - 08:06:29
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Joo пишет:
Вот так например:
PHP:
скопировать код в буфер обмена
  1. $result = preg_replace('/\b(https?:\/\/[-A-Z0-9.]+(?:\/[-A-Z0-9+&@#\/%=~_|!:,.;]*)?(?:\?[A-Z0-9+&@#\/%=~_|!:,.;]*)?)\b/im', 'http://mysite.ru/link.php?=$1', $content);


Этот вариант отлично работает со ссылками!
Только одно НО! Товарищи, как возможно сделать так, чтобы оно не "трогало" картинки и ссылки на "http://mysite.ru"?
Спасибо огромное заранее!
 
 Top
JustUserR
Отправлено: 08 Сентября, 2010 - 09:30:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Craken пишет:
Товарищи, как возможно сделать так, чтобы оно не "трогало" картинки и ссылки на "http://mysite.ru"?
Для того чтобы в приведенном регулярном выражении отключить автоматическое формирование гиперссылок для тех URL-адресов которые уже указывают на перенаправляемый домен - возможно использовать предварительный негативный просмотр вперед с фиксированным шаблоном этого домена - то есть начало регулярного выражения можно модифицировать примерно так (https?:\/\/(?!mysite\.ru)[-A-Z0-9.]+(?:


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Craken
Отправлено: 10 Сентября, 2010 - 07:18:20
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




JustUserR пишет:
Craken пишет:
Товарищи, как возможно сделать так, чтобы оно не "трогало" картинки и ссылки на "http://mysite.ru"?
Для того чтобы в приведенном регулярном выражении отключить автоматическое формирование гиперссылок для тех URL-адресов которые уже указывают на перенаправляемый домен - возможно использовать предварительный негативный просмотр вперед с фиксированным шаблоном этого домена - то есть начало регулярного выражения можно модифицировать примерно так (https?:\/\/(?!mysite\.ru)[-A-Z0-9.]+(?:

Спасибо за понятный ответ!
Конечно интересно на сколько такая конструкция замедляет вывод текста!
 
 Top
JustUserR
Отправлено: 10 Сентября, 2010 - 14:05:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Craken пишет:
Спасибо за понятный ответ!
Конечно интересно на сколько такая конструкция замедляет вывод текста!
Пожалуйста! Машина обработки регулярных выражения алгоритмически обладает средней производительностю однако в случае ее применения в PHP-интерпрерторе имеется несколько иная ситуация - в частности сложные и комплексыне регулярные будут работать бысрее чем набор одиночных шаблонов или использования строковых функций - дело в том что их разбор и выполнение происходит в компилируемом библиотечном коде - которые работает значительно быстрее чем интерпретатор пользовательсокго PHP-кода


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB