За последние 24 часа нас посетили 16803 программиста и 1254 робота. Сейчас ищут 1449 программистов ...

кирилица в регулярном выражении

Тема в разделе "Регулярные выражения", создана пользователем xak2, 8 апр 2008.

  1. xak2

    xak2 Guest

    PHP:
    1. preg_match_all('/<td id="cat_type">Тип столов:<\/td><td>(.*)<\/td>/Usi', $contents, $data[], PREG_SET_ORDER);
    Долг осам кактоы пытался найти, так и ненашел. Кто знает решение проблемы? Возможно здесь играет роль мое незнание регулярок.
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  3. xak2

    xak2 Guest

    Попробовал несколько примеров но ничего ен помгло, направь на истеный пожалуйста пусть.
     
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Кодировка данных и кодировка строки в regexp совпадают?
     
  5. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    HTML:
    1. string(66) "\<td id\="cat_type"\>Тип столов\:\</td\>\<td\>(.*)\</td\>"
    2. Array
    3. (
    4.     [0] => Array
    5.         (
    6.             [0] => <td id="cat_type">Тип столов:</td><td>asfdasdf</td>
    7.             [1] => asfdasdf
    8.         )
    9.  
    10. )
    11.  
    PHP:
    1. <?
    2.  
    3. $contents = '<td id="cat_type">Тип столов:</td><td>asfdasdf</td>';
    4.  
    5. $pattern = preg_quote('<td id="cat_type">Тип столов:</td><td>') . '(.*)' . preg_quote('</td>');
    6. var_dump($pattern);
    7. preg_match_all('|'.$pattern.'|Usi', $contents, $data, PREG_SET_ORDER);
    8. print_r($data);
    9. ?>
    PHP:
    1. <?php
    2. $contents = '<td id="cat_type">Тип столов:</td><td>asfdasdf</td>';
    3. mb_detect_encoding($contents); // UTF-8... только я почему-то не очень доверяю этой функции )
    4.  
     
  6. xak2

    xak2 Guest

    Проблема сменила оборот. На моем сайте все работает, но если беру с другого, в пхп скрипт контент получаю в виде UTF-8. И есл ивывести контент через echo $contents текст красиво отображаеться. Сам файл скрипта в utf8. А внедренный в скрипт контент:

    $c = "АБВГД";
    echo $c;

    отображается каракулями. Чтобы работал скрипт, надо сделать чтобы поулченынй контент отображался также как и присвоеный в скрипте. Как этого добиться?
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    А ты при сохранении скрипта с внедренным контентом выбирай кодировку utf8.
     
  8. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Смотрите библиотеку mbstring
     
  9. xak2

    xak2 Guest

    Все (надеюсь правил ьно) заработало! Спасибо за помощь.
     
  10. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Эх, кто-то плохо читал мануал. Модификатор для регулярок PCRE на UTF-8 не большая U а маленькая u
    А U значит совсем другое
     
  11. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Psih, я думаю, что тум именно U и подразумевался.
     
  12. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Sergey89
    Эм... U это ungreedy maching, а u - это UTF-8. У него проблема с кодировками а не с greedy/ungreedy. Про U он и сам знает, т.к. поставил её в исходном примере. Пусть добавит u и будет всё нормально, ну и кодировку HTML страницы выставит нормально.