Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Регистронезависимый поиск с помощью reg


Автор: мухр 9.10.2006, 08:17
Код

preg_match_all("/^\s/is", $text, $entries);

Как быть в случае с юникодом? Как указать, что регистронезависимый поиск в строке должен вестись с учётом её кодировки?

Автор: Mal Hack 9.10.2006, 08:32
На вскидку, там вроде должен быть модификатор u.

Автор: мухр 9.10.2006, 08:43
http://doc.woweb.ru/index.htm/id/1067078931
Цитата
U - Делает все количественные метасимволы "не жадными" по умолчанию (про "жадность" количественных метасимволов см. выше)

Вообще, где бы скачать полное описание по регулярным выражениям?

Автор: Mal Hack 9.10.2006, 08:57
Цитата(мухр @  9.10.2006,  09:43 Найти цитируемый пост)
Вообще, где бы скачать полное описание по регулярным выражениям? 

http://ru.php.net/manual/en/ref.pcre.php

Цитата(мухр @  9.10.2006,  09:43 Найти цитируемый пост)
U - Делает все количественные метасимволы "не жадными" по умолчанию (про "жадность" количественных метасимволов см. выше)

Обрати внимание,  я писал "u" - маленькое, а не большое:

http://ru.php.net/manual/en/reference.pcre.pattern.modifiers.php
Цитата
u (PCRE_UTF8)

    This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5. 

Автор: мухр 9.10.2006, 08:58
Ага. Ну ясно.

Автор: Наставник 9.10.2006, 15:48
А что бы было совсем ясно, вот вам примерчик %)


Код

<?php
  $str='SSfinЧ23';
  preg_match('/SSfin.23/',$str,$out1);
  preg_match('/SSfin.23/u',$str,$out2);
  print_r($out1);
  print_r($out2);

// Результат
  Array 
  (
  )

  Array
  (
     [0]=>SSfin 23
  )
?>


режим u

Включает режим кодировки символов UTF-8. В этом режиме PRCE предполагает, что шаблон будет применяться к строкам с кодировкой UTF-8. Таким образом, метасимвол "." соответствует многобайтовым символам (см. второй случай)


Автор: IZ@TOP 27.2.2007, 18:25
Цитата

In  UTF-8 mode, characters with values greater than 128 never match \d,
       \s, or \w, and always match \D, \S, and \W. This is true even when Uni-
       code character property support is available.


http://ru2.php.net/manual/ru/reference.pcre.pattern.syntax.php#52868

Может оказаться полезным.

Автор: ikillbill 3.1.2009, 01:45
У меня нет слов чтобы выразить, в проходящем цензуру крике то, насколько я был удивлен тем, что одна маленькая буковка u могла так сильно затормозить работу. Еще в том году.

У меня нет слов чтобы выразить благодарность вам Mal Hack, за то чудо-сообщение что вы оставили выше. 
Спасибо преогромнейшее!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)