необходимо в html коде изменить имя домена, но только в тегах <a href="XXXX">.
т.е. например имеем код:
<img src="domain1.ru/images/style/header_ico_reg.gif" alt="">
<a href="domain1.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
нужно поменять domain1 на domain2, в итоге должно получиться так:
<img src="domain1.ru/images/style/header_ico_reg.gif" alt="">
<a href="domain2.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
Спустя 22 минуты, 11 секунд (26.11.2010 - 10:46) kirik написал(а):
str_replace('href="domain1.ru/', 'href="domain2.ru/', $str);
Спустя 46 минут, 38 секунд (26.11.2010 - 11:32) mavrrr написал(а):
так не прокатит, исходный код может быть таким:
<img src="domain1.ru/images/style/header_ico_reg.gif" alt="">
<a href="afisha.domain1.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
<a href="news.domain1.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
после обработки должно получится так:
<img src="domain1.ru/images/style/header_ico_reg.gif" alt="">
<a href="afisha.domain2.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
<a href="news.domain2.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
<img src="domain1.ru/images/style/header_ico_reg.gif" alt="">
<a href="afisha.domain1.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
<a href="news.domain1.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
после обработки должно получится так:
<img src="domain1.ru/images/style/header_ico_reg.gif" alt="">
<a href="afisha.domain2.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
<a href="news.domain2.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
Спустя 12 минут, 36 секунд (26.11.2010 - 11:45) kirik написал(а):
Тогда так:
$str = '<img src="domain1.ru/images/style/header_ico_reg.gif" alt="">
<a href="afisha.domain1.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>
<a href="news.domain1.ru/forum/ucp.php?mode=register" class="reg">Регистрация</a>';
$str = preg_replace('#<a(.+?)href="(.*?)domain1\.ru/#i', '<a\\1href="\\2domain2.ru', $str);
echo $str;
Спустя 1 час, 56 минут, 26 секунд (26.11.2010 - 13:41) mavrrr написал(а):
Цитата (kirik @ 26.11.2010 - 08:45) |
Тогда так:$str = '<img src="domain1.ru/images/style/header_ico_reg.gif" alt=""> |
получается вот так:
<img src="domain1.ru/images/style/header_ico_reg.gif" alt="">
<a href="afisha.domain2.ruforum/ucp.php?mode=register" class="reg">Регистрация</a>
<a href="news.domain2.ruforum/ucp.php?mode=register" class="reg">Регистрация</a>
news.domain2.ruforum слитно
Спустя 3 часа, 10 минут, 54 секунды (26.11.2010 - 16:52) mavrrr написал(а):
еще проблема, когда я загружаю в переменную $str страницу html полностью, preg_replace() возвращает пустую строку
Спустя 4 часа, 20 минут, 44 секунды (26.11.2010 - 21:13) kirik написал(а):
Цитата (mavrrr @ 26.11.2010 - 05:41) |
news.domain2.ruforum слитно |
Ну да, слэш вчера спросони потерял.
$str = preg_replace('#<a(.+?)href="(.*?)domain1\.ru/#i', '<a\\1href="\\2domain2.ru/', $str);
Цитата (mavrrr @ 26.11.2010 - 08:52) |
когда я загружаю в переменную $str страницу html полностью, preg_replace() возвращает пустую строку |
Скорее всего памяти не хватает. У нас так форум иногда делает.
Спустя 13 часов, 36 минут, 48 секунд (27.11.2010 - 10:50) mavrrr написал(а):
За прег большой респект!
На счет не хватает памяти, очень сомневаюсь, на локалхосте 8гигов ОЗУ, может что с кодировками?
На счет не хватает памяти, очень сомневаюсь, на локалхосте 8гигов ОЗУ, может что с кодировками?
Спустя 24 минуты, 21 секунда (27.11.2010 - 11:14) kirik написал(а):
Цитата (mavrrr @ 27.11.2010 - 02:50) |
очень сомневаюсь, на локалхосте 8гигов ОЗУ |
Все 8 отданы на съедение пхп?
Цитата (mavrrr @ 27.11.2010 - 02:50) |
может что с кодировками? |
Наврядли вообще.. А какая кодировка текста?
Спустя 2 часа, 47 минут, 9 секунд (27.11.2010 - 14:01) FatCat написал(а):
Цитата (kirik @ 27.11.2010 - 12:14) |
Все 8 отданы на съедение пхп? |
Регулярки как-то странно работают с памятью. Похоже, выделение памяти регулярке не зависит от количества памяти в пхп. Если интересно, могу показать в кодах. Я для себя решил где только можно избегать регулярок и пользоваться substr, strpos или на крайний случай explode для резки текста.
Спустя 1 день, 2 часа, 27 минут, 32 секунды (28.11.2010 - 16:29) mavrrr написал(а):
Цитата (kirik @ 27.11.2010 - 08:14) | ||||
Все 8 отданы на съедение пхп?
Наврядли вообще.. А какая кодировка текста? |
проблема все таки в кодировках, если я делаю так:
$str = file_get_contents('http://www.ya.ru/');
echo $str;
все ок, но если я делаю хотябы так:
$str = file_get_contents('http://www.ya.ru/');
$str = substr($str, 0, 20);
echo strlen($str);
echo $str;
echo "end";
выдает только: 20
т.е. substr отрабатывает, но при выводе проблемы :( скрипт просто завершает свою работу, даже варнинг не показывает :(
Спустя 4 часа, 31 минута, 8 секунд (28.11.2010 - 21:00) kirik написал(а):
Цитата (mavrrr @ 28.11.2010 - 08:29) |
т.е. substr отрабатывает, но при выводе проблемы скрипт просто завершает свою работу, даже варнинг не показывает |
Я так понимаю у вас денвер стоит?
Спустя 2 часа, 42 минуты, 39 секунд (28.11.2010 - 23:42) mavrrr написал(а):
денвер стоит, но я попробовал еще на 2х хостах, best-hoster.ru и atlex.ru, тоже самое попробуй у себя
Спустя 33 минуты, 25 секунд (29.11.2010 - 00:16) kirik написал(а):
Цитата (mavrrr @ 28.11.2010 - 15:42) |
попробуй у себя |
ваш скрипт выдаёт:
20<!DOCTYPE HTML PUBLIend
тоесть все нормально отрабатывается.
У вас файл в utf8?
Спустя 10 часов, 40 минут, 11 секунд (29.11.2010 - 10:56) mavrrr написал(а):
Да, проблема была в кодировке php файла, даже не думал что это может как то влиять. Но сам прег работает не во всех случаях:
<li><a href="http://news.domain1.ru">Новости</a></li>
<li><a href="http://mama.domain1.ru/place/?=domain1.ru">Я мама</a></li>
<li><a href="http://www.beauty.domain1.ru">Красота и здоровье</a></li>
<li><a href="www.fashion.domain1.ru">Мода</a></li>
<li><a href="www.domain1.ru/gut/">Дом</a></li>
<li><a href="http://holidays.domain1.ru">Отдыхаем</a></li>
<li class="last"><a href="http://lifestyle.domain1.ru">Стиль жизни</a></li>
Спустя 1 день, 17 часов, 19 минут, 45 секунд (1.12.2010 - 04:16) kirik написал(а):
$str = preg_replace('#<a(.+?)href="(.*?)domain1\.ru(/?)#i', '<a\\1href="\\2domain2.ru\\3', $str);