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

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

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

 

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

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

тема: Как заменить URL на нужный
 
 автор: toproot   (08.10.2009 в 23:34)   письмо автору
 
 

На форуме не нашел, мне нужно регулярное выражение, способное с помощью preg_replace заменить все URL-адреса в тегах <A> атрибутах href на свой. Т.Е:

<?php
$text 
" welcome to <a href=\"http://google.ru/?hl=UA\"> google ukraine </a> and <a href='http://google.ru/?hl=RU'> google russia </a> more text";
?>

Нужно заменить все ссылки, таким образом : вместо http://google.ru/?hl=ru получить http://www.phplab.org.ua/browser.php?url=http://google.ru/?hl=ru. Это нужно для создания типа прокси-сервера.

подскажите плиз, ато я ну никак с регулярками не дружу

  Ответить  
 
 автор: cheops   (09.10.2009 в 11:56)   письмо автору
 
   для: toproot   (08.10.2009 в 23:34)
 

Можно поступить следующим образом
<?php 
  $text 
" welcome to <a href=\"http://google.ru/?hl=UA\"> google ukraine </a> ".
          
"and <a href='http://google.ru/?hl=RU'> google russia </a> more text"
  
$pattern "|<a[\s]+href=[\"']([^\"']+)[\"']|is";
  
$replace "<a href='http://www.phplab.org.ua/browser.php?url=\\1'";
  
$text preg_replace($pattern$replace$text);
  echo 
$text;
?>

  Ответить  
 
 автор: toproot   (09.10.2009 в 18:22)   письмо автору
 
   для: cheops   (09.10.2009 в 11:56)
 

Благодарю, работает. Возник по ходу еще один вопрос.

<?php
$geturl 
$_GET['url'];  // Адрес на котором находимся мы;
// Допустим он равен http://host/dir/index.html  а ссылки на страницах без протокола, т.е просто _page.html?uri;
?>
 

Извлекаем из введеного GET URL, адрес без файла т.е http://host/dir/ .
Как можно заменить все ссылки <a href="page.html"> на <a href="http://host/dir/page.html"> ?

  Ответить  
 
 автор: cheops   (09.10.2009 в 20:40)   письмо автору
 
   для: toproot   (09.10.2009 в 18:22)
 

Что-то не очень понятно, где и что заменяется...

  Ответить  
 
 автор: toproot   (10.10.2009 в 00:09)   письмо автору
 
   для: cheops   (09.10.2009 в 20:40)
 

Ну как правило на страницах редко используют полные ссылки типа http://domain/dir/file.html а чеще всего используют просто /dir/file.html или file.htm. Браузер сам подставляет имя узла, протокол, и директории. Нужно подставить во все ссылки <a href="dir/page.html"> адрес узла, те : <a href="http://host/dir/page.html"> т.е http://host/dir/ + page.html

  Ответить  
 
 автор: Trianon   (10.10.2009 в 00:17)   письмо автору
 
   для: toproot   (10.10.2009 в 00:09)
 

вот только далеко не всегда браузер подставляет при этом базу из адреса открытой страницы.
В HTML база может быть (и нередко бывает) переназначена.

  Ответить  
 
 автор: cheops   (10.10.2009 в 12:35)   письмо автору
 
   для: toproot   (10.10.2009 в 00:09)
 

В принципе вы можете извлечь текущий адрес сервера из переменной $_SERVER['SERVER_NAME'] или имеется в виду другая задача?

  Ответить  
 
 автор: toproot   (11.10.2009 в 23:09)   письмо автору
 
   для: cheops   (10.10.2009 в 12:35)
 

Нет, это не подойдет, но я с пом. trim() выберу нужный адрес. Меня интересует регулярное выражение для добавления во все стоки <a href="page.php"> адреса сайта (я его извлеку сам) . заменить page.php на http://host/dir/page.php во всех ссылках.

  Ответить  
Rambler's Top100
вверх

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