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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена пути в тэге <A> 
V
    Опции темы
DeamonShan
Дата 20.10.2009, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



здрасти.

Подскажите с регуляркой плиз.
Как заменить в тэге скажем:

Код

<a target=_blank href="http://mysite.ru?ya=ok&todo=no" tut_eshe kakie-to atributi>


домен mysite.ru на yoursite.ru ??

чтобы в итоге получилось:

<a target=_blank href="http://yoursite.ru?ya=ok&todo=no" tut_eshe kakie-to atributi>


ПС. с WWW тоже чтоб срабатывало правило.

я написал вот так:

Код

preg_replace("/(<a[^>]*? href=.*?)(".preg_quote($fromURL).")(.*?>)/i", "\\1".$toURL."\\3", $tag);


она не работает. точнее работает, но заменяет только  тэги в которых нет атрибутов, так скажем ровные тэги. А сложные (с атрибутами и параметрами после "?") не меняет.

Это сообщение отредактировал(а) DeamonShan - 20.10.2009, 19:37
PM MAIL   Вверх
motorway
Дата 20.10.2009, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А просто str_replace не подойдет? (если адрес встречается только в этом куске кода)
PM MAIL   Вверх
DeamonShan
Дата 20.10.2009, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



str_replace не подойдет, потому как, кроме этого тэга в документе куча других тэгов... а нужно чтобы именно в тэге <A>
PM MAIL   Вверх
motorway
Дата 20.10.2009, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



То есть так не подойдет: $text=str_replace('href="http://mysite.ru?ya=ok&todo=no"', 'href="http://yoursite.ru?ya=ok&todo=no"',$string); ?
Вряд ли где-то еще будет встречаться href=...
PM MAIL   Вверх
DeamonShan
Дата 20.10.2009, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



href= действительно не встречается.
и если написать так:

Код

str_replace('href="http://mysite.ru"', 'href="http://yoursite.ru"',$string);
str_replace('href="http://www.mysite.ru"', 'href="http://www.yoursite.ru"',$string);


но если в документе будут встречаться my.mydomain.ru или download.mydomain.ru то уже не прокатит. а для каждого такого случая не писать же str_replace.

И хотелось бы более красиво регулярками это организовать.
PM MAIL   Вверх
youri
Дата 21.10.2009, 00:47 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



напиши регуярное выражение, которое начинается на href и заканчивается на кавычку (если она присутствует)
PM   Вверх
DeamonShan
Дата 21.10.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Кавычка не всегда может присутствовать, поэтому и ограничил регулярку, точнее условие вопроса, ломаными скобками "<>" и тэгом <А>.

Помогите пожалуйста. 
PM MAIL   Вверх
Kevin
Дата 21.10.2009, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код
$str = 'Поисковая система: "<a target="blank" 
href="http://www.yandex.ru/script?param=some" 
title="google" id="google">Гугль</a>" 
--- круче всех!';

echo preg_replace('#(\<a.*?)(yandex\.ru)#is', '$1google.com', $str);


Это сообщение отредактировал(а) Kevin - 21.10.2009, 12:21
PM MAIL   Вверх
youri
Дата 21.10.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(DeamonShan @  21.10.2009,  09:45 Найти цитируемый пост)
Кавычка не всегда может присутствовать

и что это меняет?
PM   Вверх
brother79
Дата 28.10.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(DeamonShan @  20.10.2009,  19:25 Найти цитируемый пост)
она не работает. точнее работает, но заменяет только  тэги в которых нет атрибутов, так скажем ровные тэги. А сложные (с атрибутами и параметрами после "?") не меняет.


У тебя явно ошибка, не экранировал <>, они являются спецсимволами.


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


Опытный
**


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

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



пруфлинк?
PM   Вверх
DeamonShan
Дата 2.11.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А что значит пруфлинк?
PM MAIL   Вверх
youri
Дата 2.11.2009, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



PM   Вверх
brother79
Дата 2.11.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(DeamonShan @  20.10.2009,  19:25 Найти цитируемый пост)
1:
    
preg_replace("/(<a[^>]*? href=.*?)(".preg_quote($fromURL).")(.*?>)/i", "\\1".$toURL."\\3", $tag);



Должно работать:

Код

preg_replace('/(\<a[^>]*?\shref=[\'"])' . preg_quote($fromURL) . '([\'"][^>]*\>)/i', "\\1".$toURL."\\2", $tag);


Добавлено через 3 минуты и 10 секунд
Цитата(youri @  28.10.2009,  12:41 Найти цитируемый пост)
пруфлинк? 



Не знаю ссылку, в бумаге читал, связанно их смысл с началом и концом слова.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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