#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';
}