Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: подсчет одинаковых слов на странице
Форумы портала PHP.SU » PHP » Программирование на PHP » подсчет одинаковых слов на странице

Страниц (2): [1] 2 »
 

1. LEONeso - 26 Декабря, 2010 - 00:33:59 - перейти к сообщению
Здравствуйте.
Как реализовать подсчет одинаковых слов на странице?

Допустим, если слово повторяется хотя бы 1 раз, то выводи слосов и кол-во построений.

Возможно, кто-то уже делал, что-то подобное?
2. OrmaJever - 26 Декабря, 2010 - 00:39:50 - перейти к сообщению
Это можно зделать с помощью строковых функций.
посмотрите substr_count(), strpos() и подобных.
3. LEONeso - 26 Декабря, 2010 - 02:05:56 - перейти к сообщению
Взял примеры и чета не то получилось и не могу понять как...
PHP:
скопировать код в буфер обмена
  1. $pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
  2. $pieces = explode(" ", $pizza);
  3. $newstring = 'piece1 piece1 piece1 abcdef';
  4. $pos = substr_count($newstring, explode(" ", $pizza)); // $pos = 7, not 0
  5. $comma_separated = implode(", ", $pieces);
  6.  
  7. echo <<<HTML
  8. Кол-во повторений: $pos
  9. Вывод в стоку: $comma_separated
  10. HTML;
4. grefon - 26 Декабря, 2010 - 05:09:50 - перейти к сообщению
Тут написана якась хрень!



Вы ищите в строке $newstring количество вхождений массива! Конечно он найдет 0.
Вот если бы Вы искали так:



то нашли бы 3 вхождения. Вы уже разбили строку на массив ($pieces = explode(" ", $pizza);) по пробелу и переменная $pieces - это массив в котором первое значение piece1, второе - piece2, третье - piece3 и тд. Чтобы наяти сколько раз будет повторяться piece1 в переменной $newstring нужно указывать элемент массива $pieces[0].

Перечитайте документацию. Все работает!
5. LEONeso - 26 Декабря, 2010 - 16:22:18 - перейти к сообщению
Требуется не писать key массива, а вывести сразу все автоматом... я пробывал разные вариации на протяжении 3-х часов.
PHP:
скопировать код в буфер обмена
  1. $content = 'piece1 piece2 piece1 piece1 abcdef';
  2. $word = "piece1 piece2 piece3 piece4 piece5 piece6";
  3. list($shot) = split ('[/.-]',  $word);
  4.  
  5. //$shot = explode(" ", $word);//    не работает
  6.  
  7.     foreach(range(0,10) as $key){
  8.     $pos = substr_count($content, $shot[$key])-1;
  9.     }
  10. $glue = implode(", ", $shot); //    не работает
  11.  
  12. echo <<<HTML
  13. Кол-во повторений: $pos
  14. Вывод в стоку: $glue
  15. HTML;

еще одна провальная попытка
6. OrmaJever - 26 Декабря, 2010 - 16:44:33 - перейти к сообщению
вы тут чёто начали мудрить совсем не то.
PHP:
скопировать код в буфер обмена
  1. $pizza  = "piece1 piece3 piece2 piece3 piece4 piece1 piece5 piece6 piece3";
  2. $pieces = explode(" ", $pizza);
  3. foreach($pieces as $val)
  4. $pos[$val] = substr_count($pizza, $val);
  5.  
  6. foreach($pos as $key => $cal)
  7. {
  8. echo <<<HTML
  9. Кол-во повторений: $key = $cal<br>
  10. HTML;
  11. }
7. Coder1994 - 27 Декабря, 2010 - 12:38:52 - перейти к сообщению
Для этого есть простая функция - preg_match
8. OrmaJever - 27 Декабря, 2010 - 13:16:39 - перейти к сообщению
Coder1994 пишет:
Для этого есть простая функция - preg_match

Да ладно? Не понял Напишите скрипт с использованием этой функции.
9. Coder1994 - 27 Декабря, 2010 - 14:52:43 - перейти к сообщению
OrmaJever пишет:
Coder1994 пишет:
Для этого есть простая функция - preg_match

Да ладно? Не понял Напишите скрипт с использованием этой функции.

А что, разве эта функция не сделана для того, что подсчитывать совпадения?
10. FRIK - 27 Декабря, 2010 - 15:03:53 - перейти к сообщению
Coder1994 пишет:
OrmaJever пишет:
Coder1994 пишет:
Для этого есть простая функция - preg_match

Да ладно? Напишите скрипт с использованием этой функции.

А что, разве эта функция не сделана для того, что подсчитывать совпадения?



Радость http://www.php.su/functions/?f=p...&choice=info
11. LEONeso - 29 Декабря, 2010 - 01:47:33 - перейти к сообщению
OrmaJever, спасибо, работает. Еще однин вопрос, как убрать циклы для html строк в переменной?

по идее, любой html заключается в < >

PHP:
скопировать код в буфер обмена
  1.       $pizza  = "piece1 piece3 piece2 piece3 piece4 piece1 piece5 piece6 piece3 <br>";
  2.       $pieces = explode(" ", $pizza);
  3.       foreach($pieces as $val)
  4.       $pos[$val] = substr_count($pizza, $val);
  5.        
  6.       foreach($pos as $key => $cal)
  7.       {
  8.  
  9. echo <<<HTML
  10. Кол-во повторений: $key = $cal<br>
  11. HTML;
  12.       }


данный пример вернул:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Кол-во повторений: piece1 = 2
  2. Кол-во повторений: piece3 = 3
  3. Кол-во повторений: piece2 = 1
  4. Кол-во повторений: piece4 = 1
  5. Кол-во повторений: piece5 = 1
  6. Кол-во повторений: piece6 = 1
  7. Кол-во повторений:
  8. = 1

последняя строка <br> - переход на новую строку
12. jewel - 29 Декабря, 2010 - 01:56:22 - перейти к сообщению
$cal=strip_tags($cal);
13. LEONeso - 29 Декабря, 2010 - 02:18:51 - перейти к сообщению
я тут откопал целое регулярное выражение Не понял
PHP:
скопировать код в буфер обмена
  1. $search = array ("'<script[^>]*?>.*?</script>'si", // Вырезает javaScript
  2.         "'<[\/\!]*?[^<>]*?>'si", // Вырезает HTML-теги
  3.         "'([\r\n])[\s]+'", // Вырезает пробельные символы
  4.         "'&(quot|#34);'i", // Заменяет HTML-сущности
  5.         "'&(amp|#38);'i",
  6.         "'&(lt|#60);'i",
  7.         "'&(gt|#62);'i",
  8.         "'&(nbsp|#160);'i",
  9.         "'&(iexcl|#161);'i",
  10.         "'&(cent|#162);'i",
  11.         "'&(pound|#163);'i",
  12.         "'&(copy|#169);'i",
  13.         "'&#(\d+);'e"); // интерпретировать как php-код
  14.  
  15. $replace = array ("",
  16.         "",
  17.         "\\1",
  18.         "\"",
  19.         "&",
  20.         "<",
  21.         ">",
  22.         " ",
  23.         chr(161),
  24.         chr(162),
  25.         chr(163),
  26.         chr(169),
  27.         "chr(\\1)");
  28. $text = preg_replace($search, $replace, $document);
14. OrmaJever - 29 Декабря, 2010 - 12:00:00 - перейти к сообщению
ценю труд человека который это написал но я бы использовал strip_tags() Подмигивание
15. LEONeso - 29 Декабря, 2010 - 14:31:47 - перейти к сообщению
OrmaJever, опробовал совет jewel с strip_tags() и даже с fgetss(), применял данные функции к каждой переменной, но все было провально, куда бы я их не тыкал (метод тыка, откинув здравый смысл - отчаянье? Однако )

 

Powered by ExBB FM 1.0 RC1