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 :: не работает perl - регуляреное выражени(Кирилица)

 PHP.SU

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


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

> Без описания
tors
Отправлено: 07 Апреля, 2010 - 17:14:15
Post Id


Гость


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


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




PHP:
скопировать код в буфер обмена
  1.  $val='Автор: <a href="mailto:%C3%8D%C3%A5%C3%A8%C3%A7%C3%A2%C3%A5%C3%B1%C3%B2%C3%A5%C3%AD">Aleksey</a>';
  2.  $rxp='/^(Автор:)(.+)(a>)$/';
  3.  $res=preg_match($rxp,$val,$Word);
  4.  



так работает, те $res==true
и $Word[0] - Возвращает то, что нужно:
CODE (html):
скопировать код в буфер обмена
  1. Автор: <a href=
  2. "mailto:%C3%8D%C3%A5%C3%A8%C3%A7%C3%A2%C3%A5%C3%B1%C3%B2%C3%A5%C3%AD">
  3. Aleksey</a>


а если :
PHP:
скопировать код в буфер обмена
  1. setlocale (LC_ALL, array ("ru_RU.CP1251", "rus_RUS.1251"));
  2.  
  3.  config=array('ident' => TRUE,
  4.      'char-encoding' => win1251,
  5.      'input-encoding' => win1251,
  6.      'output-encoding' => win1251);
  7.  
  8.  $link="http://www.xakep.ru/post/49795/default.asp";
  9.  
  10.  $tidy=new tidy;
  11.  $rs=$tidy->parseFile($link,$config);
  12.  $node=$tidy->Body();
  13.  $val=$node->value;
  14.  $rxp='/^(Автор:)(.+)(a>)$/';
  15.  $res=preg_match($rxp,$val,$Word);
  16.  
  17.  


res==false,
хотя полученный текст html - документа содержит : HTML:
CODE (html):
скопировать код в буфер обмена
  1.  Автор: <a href=
  2. "mailto:%C3%8D%C3%A5%C3%A8%C3%A7%C3%A2%C3%A5%C3%B1%C3%B2%C3%A5%C3%AD">
  3.  Aleksey</a>
  4.  


только с разрывами строк после href= и перед Aleksey

почему не работает regexp?
 
 Top
trot
Отправлено: 07 Апреля, 2010 - 21:05:43
Post Id


Новичок


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


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




Попробуй поставить модификаторы s и m
 
 Top
tors
Отправлено: 08 Апреля, 2010 - 08:16:04
Post Id


Гость


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


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




Цитата:
Попробуй поставить модификаторы s и m


не помогат
 
 Top
Champion Супермодератор
Отправлено: 08 Апреля, 2010 - 11:06:40
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




tors пишет:
(АвторУлыбка
Нужно либо чтобы файл был сохранен в той же кодировке, в которой приходят строки на обработку, либо писать коды кириллических символов \х99 вот так. Или \u9999, если юникод.
 
 Top
tors
Отправлено: 08 Апреля, 2010 - 12:48:40
Post Id


Гость


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


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




Цитата:
Нужно либо чтобы файл был сохранен в той же кодировке, в которой приходят строки на обработку, либо писать коды кириллических символов \х99 вот так. Или \u9999, если юникод.


приходила такая мысль

PHP:
скопировать код в буфер обмена
  1. $rxp="/^(\xC0\xE2\xF2\xEE\xF0)(.+)(a>)$\s\m/";


не работат
 
 Top
JustUserR
Отправлено: 09 Апреля, 2010 - 12:00:25
Post Id



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


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


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




tors пишет:
Приходила такая мысль
Либо как вариант можно изменить текущую локаль или преобразовать данные с помощью iconv - потому что регулярные выражения не особо хорошо работают со сторонней для данного PHP-скрипта кодировкой


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


Новичок


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


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




$rxp="/^(\xC0\xE2\xF2\xEE\xF0)(.+)(a>)$\s\m/";

что значит \s\m ?
 
 Top
tors
Отправлено: 10 Апреля, 2010 - 01:14:56
Post Id


Гость


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


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




Цитата:
что значит \s\m ?


Цитата:
Попробуй поставить модификаторы s и m
 
 Top
Champion Супермодератор
Отправлено: 10 Апреля, 2010 - 08:32:17
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Модификаторы ставятся после закрывающего символа (у тебя - /) и не экранируются. А так получилось, что после конца строки у тебя должны идти пробел, слеш и буква m
 
 Top
JustUserR
Отправлено: 10 Апреля, 2010 - 14:01:40
Post Id



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


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


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




trot пишет:
Что значит \s\m ?
Если расположить их правильно после закрывающего слеша то будут значить следующее - /s значи то что символ точка . соответствует также символу новой строки - а модификатор /m в Perl означает многостроковое регулярное выражние но оно здесь не совсем кстати - просто в пробелы игнорируются и скажем заместо пробела пишут \x20 - но здесь это не влияет
И также советую вам привести проверяемые в регулярном выражении данные в одну с PHP-скриптом однобайтовую кодировку- например windows-cp1251 (Для юникода уже придется использовать другой формат с 4 символами)


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный 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