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]   

> Без описания
Acbir
Отправлено: 05 Февраля, 2015 - 13:48:20
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


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




не могу совместить две регулярки. есть две рабочие регулярки, помогите совместить никак не получается мозг уже взорвался
это корректно преобразует кирилические домены в латинские
PHP:
скопировать код в буфер обмена
  1. $str = preg_replace("/(\w+)/e","strtolower(idn_to_ascii(iconv('cp1251', 'utf-8','$1')))", "http://igum16-1.инфф.рф/f15.php");

эта корректно меняет латинские на гиперссылки
PHP:
скопировать код в буфер обмена
  1. $text = preg_replace('#(?<!\])\bhttps://(?!youtube.com/)(?!youtu.be/)(?!www.youtube.com/)(?!www.youtu.be/)[^\s\[<]+#i',"<a href=./goto.html?$0 target=_blank rel=nofollow>$0</a>",$text);

работает и меняет все как надо
но у меня не получается все отладить в одном нужном запросе
PHP:
скопировать код в буфер обмена
  1. $text = preg_replace('#(?<!\])\bhttp://(?!youtube.com/)(?!youtu.be/)(?!www.youtube.com/)(?!www.youtu.be/)[^\s\[<]+#ei',"strtolower(idn_to_ascii(iconv('cp1251', 'utf-8','$0')))",$text);
  2.  

вот нормально работающий код меняет http://igum16-1[dot]инфф[dot]рф/f15.php на http://igum16-1[dot]xn--h1akva[dot]xn--p1ai/f15.php
а у меня выводит http://igum16-1[dot]xn--h1akva[dot]xn--/f15-f6dy.php
, но http://igum16-1[dot]инфф[dot]рф и там и там все нормально http://igum16-1[dot]xn--h1akva[dot]xn--p1ai
плюс это просто замена домена, но еще остается преобразование в гипер ссылку, с этим вообще беда, как только не пробую делать, если в конструкцию вставляю
PHP:
скопировать код в буфер обмена
  1.  $text = preg_replace('#(?<!\])\bhttp://(?!youtube.com/)(?!youtu.be/)(?!www.youtube.com/)(?!www.youtu.be/)[^\s\[<]+#ei',"strtolower(idn_to_ascii(iconv('cp1251', 'utf-8','<a href=./goto.html?$0 target=_blank rel=nofollow>$0</a>')))",$text);
  2.  

то касячит наверное по причине ошибки описанной чуть выше, но хотелось бы чтоб работало как то так
PHP:
скопировать код в буфер обмена
  1.  $text = preg_replace('#(?<!\])\bhttp://(?!youtube.com/)(?!youtu.be/)(?!www.youtube.com/)(?!www.youtu.be/)[^\s\[<]+#ei',"<a href=./goto.html?$0 target=_blank rel=nofollow>(strtolower(idn_to_ascii(iconv('cp1251', 'utf-8','$0'))))</a>",$text);
  2.  

то есть меняло ссылку в тегах, а не в тексте

должно множество ссылок плана:
CODE (html):
скопировать код в буфер обмена
  1. http://igum16-1.инфф.рф/

преобразовать в

CODE (html):
скопировать код в буфер обмена
  1. <a href="./goto.html?http://igum16-1.xn--h1akva.xn--p1ai/" target="_blank" rel="nofollow">http://igum16-1.инфф.рф/</a>
  2.  

(Отредактировано автором: 05 Февраля, 2015 - 13:50:54)

 
 Top
Acbir
Отправлено: 06 Февраля, 2015 - 11:06:29
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


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




жаль что не нашлось тех кто помог бы , тема не актуальна
 
 Top
GoDr
Отправлено: 06 Февраля, 2015 - 11:31:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




Acbir, уточняю...
у тебя есть где-то в тексте
Цитата:
http://igum16-1.инфф.рф/
и их нужно преобразовать в
Цитата:
<a href="./goto.html?http://igum16-1.xn--h1akva.xn--p1ai/" target="_blank" rel="nofollow">http://igum16-1.инфф.рф/</a>

Так?

PS
Acbir пишет:
жаль что не нашлось тех кто помог бы , тема не актуальна
Ну так сначала задал бы вопрос, а не выкладывал бы решение Радость


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Acbir
Отправлено: 06 Февраля, 2015 - 15:46:19
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


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




GoDr пишет:
Acbir, уточняю...
у тебя есть где-то в тексте
Цитата:
http://igum16-1.инфф.рф/
и их нужно преобразовать в
Цитата:
<a href="./goto.html?http://igum16-1.xn--h1akva.xn--p1ai/" target="_blank" rel="nofollow">http://igum16-1.инфф.рф/</a>

Так?

да, таких и других ссылок может быть множество
счас проблема возникает немного другого плана
PHP:
скопировать код в буфер обмена
  1. $html=" 1 http://youtu.be/FLfaXSmS-Ys<br>http://igum16-1.инфф.рф/<br>http://igum16-1.инфф.рф<br>http://IGum16-1.инфф.рф<br>http://igum16-1.ИНфф.рф<br>http://igum16-1.инфф.рф/f15.php<br>http://y.com<br>http://youtube.com<br>http://youtu.be<br>http://sdgwegy.com<br>http://y.com/<br>http://youtube.com/<br>http://www.y.com/<br>http://www.youtube.com/";
  2.     '#(?<!\])\bhttp://(?!youtube.com/)(?!youtu.be/)(?!www.youtube.com/)(?!www.youtu.be/)[^\s\[<]+#i',
  3.     function ($m) {
  4.     return $m[0].' - -> '.idn_to_ascii(iconv('cp1251', 'utf-8', $m[0])).' !!!  ';
  5.     },
  6.     $html
  7. );
  8. echo"<hr>$html<hr>";

результат почти гуд, но есть затык как я понимаю idn_to_ascii если я прально понял то происходит дополнительное экранирование, и команда применяется на значение с этим экранированием, как его обойти?
пример правильной выдачи
http://igum16-1[dot]инфф[dot]рф - -> http://igum16-1[dot]xn--h1akva[dot]xn--p1ai !!!
а тут уже касячит Недовольство, огорчение
http://igum16-1[dot]инфф[dot]рф/ - -> http://igum16-1[dot]xn--h1akva[dot]xn--/-4tbm !!!
http://igum16-1[dot]инфф[dot]рф/f15.php - -> http://igum16-1[dot]xn--h1akva[dot]xn--/f15-f6dy.php !!!
 
 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