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


Автор: WebS 22.3.2010, 11:30
Как сделать чтобы preg_match парсил из русского текста?

Функция, которая не работает:
Код

function get_yandex_index($host){

    $s=file('http://yandex.ru/yandsearch?surl='.$host.'&pag=u&numdoc=50&rd=0&lr=213');
        
    $match = iconv("utf-8","windows-1251", "/нашлось (.+?) страниц/");
    $sourse = iconv("utf-8","windows-1251",join("",$s));
    
    preg_match('/нашлось (.+?) страниц/',$sourse,$a);
    
    //echo "match: $match<BR>sourse: $sourse<br>$a[1]";
    
    return $a[1];
}


Аналог с англ-яз(гугл) работает норм

Автор: skyboy 22.3.2010, 12:50
кодировка приведенного кода(файла с кодом) - ср1251?

Добавлено через 27 секунд
непонятно, зачем перекодировать в ср1251. почему не использовать utf-8?

Автор: patap 22.3.2010, 14:01
вроде бы достаточно указать флаг u в рег. выражении

Код
 preg_match('/нашлось (.+?) страниц/u', $sourse, $a);

Автор: skyboy 22.3.2010, 14:26
patap, после того, как текст перекодировал из utf-8 в ср1251?

Автор: brother79 22.3.2010, 14:27
Цитата(skyboy @  22.3.2010,  12:50 Найти цитируемый пост)
непонятно, зачем перекодировать в ср1251. почему не использовать utf-8? 


Я подозреваю просто там в самом preg_match используются константы в 1251, видимо сайт разрабатывается под виндой в 1251

Автор: patap 22.3.2010, 14:57
skyboy, я имел ввиду без всяких конвертировок, а сразу подставлять в preg_match()

Автор: krypt3r 25.3.2010, 07:37
patap, и как вы себе это представляете? На сайте UTF-8, у вас CP1251. Не хотите возиться с перекодировками, переводите свои скрипты на UTF-8 и юзайте модификатор u в регулярках

Автор: skyboy 25.3.2010, 09:38
krypt3r, patap как раз это и предлагал. читай внимательно, пожалуйста.

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