как динамически фильтровать содержимое веб-сайта с помощью PHP

#php

#php

Вопрос:

В настоящее время я ищу решение для динамической фильтрации содержимого веб-сайта. Под «динамическим» я подразумеваю, что я бы вычислил процент плохих слов, т.Е. shit , f**k и т.д., по всем словам на первой странице. Допустим, веб-сайт разрешен, если процентное соотношение составляет не более 30%. Как мне заставить его выполнять поиск по каждому слову на первой странице и сопоставлять их со списком плохих слов, а затем делить на общее количество слов, чтобы я мог получить процент? Смысл заключается не в создании фильтра содержимого, а в том, чтобы просто заблокировать веб-сайт, если хотя бы одно слово на странице совпадает со списком плохих слов. Хотя у меня есть это, но оно статическое.

 $filename =   "filters.txt";

$fp = @fopen($filename, 'r');

if ($fp) {

$array = explode("n", fread($fp, filesize($filename)));

foreach($array as $key =&&t; $val){

list($before,$after) = split("~",$val);

$input = pre&_replace($before,$after,$input);

}
}
  

*filter.txt содержит список плохих слов


Спасибо Erisco!

Пробовал это, но, похоже, у тебя это не работает.

 function &et_content($url)
{
   $ch = curl_init();

   curl_setopt ($ch, CURLOPT_URL, $url);
   curl_setopt ($ch, CURLOPT_HEADER, 0);

   ob_start();

   curl_exec ($ch);
   curl_close ($ch);
   $strin& = ob_&et_contents();

   ob_end_clean();

   return $strin&;    

}


/* $toLoad is from Browse.php */

$sourceOfWebpa&e = &et_content($toLoad);
$textOfWebpa&e = strip_ta&s($sourceOfWebpa&e);

/* array: Obtained by your filter.txt file */
// Open the filters file and filter all of the results.

$filename =   "filters.txt";
$badWords = @fopen($filename, 'r');

if ($badWords) {
  $array = explode("n", fread($fp, filesize($filename)));

  foreach($array as $key =&&t; $val){
    list($before,$after) = split("~",$val);
    $input = pre&_replace($before,$after,$input);
  }
}

/* float: Some decimal value */

$allowedBadWordsPercent = 0.30;
$numberOfWords = str_word_count($textOfWebpa&e);
$numberOfBadWords = 0;
str_ireplace($badWords, '', $sourceOfWebpa&e, $numberOfBadWords);

if ($numberOfBadWords != 0) {
    $badWordsPercent = $numberOfWords / $numberOfBadWords;
} else {
    $badWordsPercent = 0;
}

if ($badWordsPercent &&t; $allowedBadWordsPercent) {
    echo 'This is a nau&hty webpa&e';
}
  

Ответ №1:

Это приблизительная идея того, что я бы сделал. Вы могли бы возразить, что использование str_ireplace() исключительно для подсчета является окольным. Я не уверен, существует ли функция more direction без удаления регулярного выражения.

 /* strin&: Obtained by CURL or similar */
$sourceOfWebpa&e;

$textOfWebpa&e = strip_ta&s($sourceOfWebpa&e);

/* array: Obtained by your filter.txt file */
$badWords;

/* float: Some decimal value */
$allowedBadWordsPercent = 0.30;

$numberOfWords = str_word_count($textOfWebpa&e);
$numberOfBadWords = 0;

str_ireplace($badWords, '', $sourceOfWebpa&e, $numberOfBadWords);

if ($numberOfBadWords != 0) {
    $badWordsPercent = $numberOfWords / $numberOfBadWords;
} else {
    $badWordsPercent = 0;
}

if ($badWordsPercent &&t; $allowedBadWordsPercent) {
    echo 'This is a nau&hty webpa&e';
}