preg и utf-8

Тема в разделе "Регулярные выражения", создана пользователем CrashX, 1 июл 2010.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    PHP:
    preg_match("[pagename:([а-яА-Яa-zA-Z0-9 |-]*)]",$ins['alltext'],$ins['attr']));
    строка [pagename:Расписание на будни 1|Расписание на выходные|Экстренное расписание]
    скрипт в утф, текст тоже, результат
    нужно из строки выдернуть
     
  2. Yozik

    Yozik

    Регистр.:
    5 дек 2007
    Сообщения:
    239
    Симпатии:
    65
    PHP:
    preg_match("/[pagename:([а-яА-Яa-zA-Z0-9 |-]*)]/u",$ins['alltext'],$ins['attr']));
     
  3. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    PHP:
    preg_match("/[pagename:([а-яА-Яa-zA-Z0-9 |-]*)]/u",'sdksdas sad sa da as das [pagename:Расписание на будни 1|Расписание на выходные|Экстренное расписание] sad sa  sd asdsa das d',$ins['attr']);
         echo
    "!!!<br>";
       
    print_r($ins['attr']);
    модификаторы не помогают не /u не /ui
     
  4. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    PHP:
    preg_match("/\[pagename:([^\]]+)]/i",'sdksdas sad sa da as das [pagename:Расписание на будни 1|Расписание на выходные|Экстренное расписание] sad sa  sd asdsa das d',$ins); 
         echo
    "!!!<br>"
       
    print_r($ins);  
     
    XSiteCMS нравится это.
  5. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    спасибо, а можно пояснить почему именно так )?
     
  6. Gisma

    Gisma Создатель

    Регистр.:
    9 май 2007
    Сообщения:
    45
    Симпатии:
    9
    Потому что символы [] слешировать надо.
    Элементарное регулярное выражение, поясяняется так: если мы нашли символ [ с последующим слово pagename, то собираем весь текст пока не найдем ], при это мы игнорируем регистр (модификатор i)
     
    XSiteCMS нравится это.
  7. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    спасибо, просто в регулярках я не особо силен...
    я так понял что их слешировать нужно только при использовании / тк, так можно будет задать условия и модификаторы. в общем понятно, стоит еще перечитать правила)
     
  8. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    слэшем выделяется любой символ, который может быть воспринят регуляркой как часть маски, например:
    Код:
    *
    +
    .
    ?
    [
    ]
    (
    )
    -
    {
    }
    
    сама же маска ограничена с двух сторон произвольными символами, которые указывают на начало маски, ее конец и модификаторы (приведу пример с одним i:(

    Код:
    /маска/i
    ~маска~i
    <маска>i
    |маска|i
    
    и т.д.
     
    XSiteCMS нравится это.
Статус темы:
Закрыта.