За последние 24 часа нас посетили 50852 программиста и 1424 робота. Сейчас ищут 1292 программиста ...

Скрипт поиска ключевых слов.

Тема в разделе "PHP для новичков", создана пользователем Dima4321, 6 дек 2010.

  1. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Кажется я на такой вопрос уже отвечал вот так:
    PHP:
    1. <?
    2. //хренушки: с UTF-8 не прокатит фокус, нужно заморачиваться с multibyte
    3. setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251', 'CP1251');
    4.  
    5. $text = 'раз два три раз два триста
    6. one two three one two threeteen';
    7.  
    8. //такое регулярное выражение найдёт повторы слов более двух раз
    9. preg_match_all('/\b(\w+)\b(?=.*?\b\1\b)/si', $text, $k);
    10. $words = array_unique($k[1]);
    11. $res = array();
    12. foreach($words as $v)
    13.   $res[$v] = substr_count($text, $v);
    14. arsort($res);
    15. echo iconv('CP1251', 'UTF-8', print_r($res, 1));
    16.  
    17. //а такое захватывает не только слова, но и повторяющиеся фразы
    18. preg_match_all('/\b(\w+(?:\s+\w+)*)\b(?=.*?\b\1\b)/si', $text, $k);
    19. $words = array_unique($k[1]);
    20. $res = array();
    21. foreach($words as $v)
    22.   $res[$v] = substr_count($text, $v);
    23. arsort($res);
    24. echo iconv('CP1251', 'UTF-8', print_r($res, 1));
    25. ?>
    26.  
    Если локаль установилась правильно, то будет так:
    Код (Text):
    1. Array
    2. (
    3.     [two] => 2
    4.     [one] => 2
    5.     [два] => 2
    6.     [раз] => 2
    7. )
    8. Array
    9. (
    10.     [one two] => 2
    11.     [раз два] => 2
    12. )
    Или так:
    Fatal error: Call to undefined function iconv() in /home/rpg/test.php on line ...
    Тогда нужно поставить iconv или убрать его из скрипта (у меня консоль в юникоде просто)