两个select查询结果,其中一个content(text),另一个是脏话词. 如何统计content在脏话词里面出现的次数.

PHP中文网
Freigeben: 2016-08-04 09:20:09
Original
892 Leute haben es durchsucht

完美的解决方法想不出来,毕竟还是渣渣。

想到一个比较丑的方法,看看就行:

$str = "1111111111111112b22222222caonima22222222";
$words = ['2b','caonima'];
$res = [];
foreach($words as $word){
    $res[$word] = count(explode($word, $str))-1;
}
return $res;
Nach dem Login kopieren

如果说是只统计脏话次数,并不要求每一个脏话的次数,之前写过一个根据多个key切割字符串的函数

$str = "1111111111111112b22222222caonima22222222";
$words = ['2b','caonima'];
function many_explode($cutKey,$string){
    $return=[];
    $key=0;
    for($i=0;$i<strlen($string);$i++){
        if(in_array($string[$i], $cutKey)){
            $key++; //当前字符在 cutKey 中,跳过,并另起一行
        }else{
            $return[$key]=isset($return[$key])?$return[$key].$string[$i]:$string[$i];
        }
    }
    return $return;
}
return count(many_explode($words, $str)) -1;
Nach dem Login kopieren

换汤不换药

1,所有的脏话的关键词建立一个表.

2,内容context 做全文索引.

3,使用mysql自带的函数检索locate,或者你用like也可以.

$arr = array(&#39;2b&#39;, &#39;fuck&#39;);
$con = array(
        array(
            &#39;content&#39;=>&#39;asdfasdf2bsdfasdf2dfasdfuck&#39;
            ),
        array(
            &#39;content&#39;=>&#39;asdfasdf2asdfasdf2dfasdfuck&#39;
            ),
        array(
            &#39;content&#39;=>&#39;asdfasdfuckbsdfasdf2dfasdfuck&#39;
            ),
    );
foreach($con as $ck => $cv) {
    foreach ($arr as $av) {
        if (($pos = strpos($cv[&#39;content&#39;], $av)) !== false) {
            $cv[&#39;checkCount&#39;][$av] = recursionSearch($cv[&#39;content&#39;], $av, $pos, 1);
        }
    }
    $con[$ck] = $cv;
}
print_r($con); //
function recursionSearch($haystack, $needle, $offset=0, $res=0 ) {
    $offset += strlen($needle); 
    if (($pos = strpos($haystack, $needle, $offset)) === false) {
        return $res;
    } else {
        return recursionSearch($haystack, $needle, $pos, $res+1 );
    }
}
// 打印结果
/**
Array
(
    [0] => Array
        (
            [content] => asdfasdf2bsdfasdf2dfasdfuck
            [checkCount] => Array
                (
                    [2b] => 1
                    [fuck] => 1
                )
        )
    [1] => Array
        (
            [content] => asdfasdf2asdfasdf2dfasdfuck
            [checkCount] => Array
                (
                    [fuck] => 1
                )
        )
    [2] => Array
        (
            [content] => asdfasdfuckbsdfasdf2dfasdfuck
            [checkCount] => Array
                (
                    [fuck] => 2
                )
        )
)
**/
Nach dem Login kopieren

谢谢回答合各位的回答,学习了多种写法。  用了qvga提供的第一种,后面加上array_sum统计了总数。 在次谢谢^_^

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!