TEL:400-8793-956
当前位置:程序、服务器

在页面上而不是其他单词中查找禁止的单词

提问者: 近期获赞: 浏览人数: 发布时间:2021-02-01 12:28:52

问:我不是在页面上其他单词内搜索被禁止的单词,而是在已加载页面内搜索被禁止的单词。

我实际上不是在其他字词中而是页面(元标记,内容)中寻找被禁词。 
 
因此,如果我要查找“公鸡”一词,则“公鸡”一词不应触发过滤器。
 
我刚刚测试了这段代码,是的,正如预期的那样,该代码可以正常工作,但是您可以猜测,有很多cpu电源循环运行。页面加载的一瞬间,另一分钟变成灰色,并显示出页面加载时间过长的迹象。而所有这些都在本地主机上。现在,我可以想象我的虚拟主机会做什么! 
所以现在,我们将不得不提出一个更好的解决方案。有任何想法吗 ?
我们如何不让脚本在加载的页面上检查所有禁止的单词?当找到1个被禁止的单词并回显了哪个被禁止的单词以及页面上的位置后,我们如何停止脚本?(元标记,正文内容等)。
有任何代码建议吗? 
 
这是到目前为止我得到的:
 
 
码:
 
<?php
/ *
错误处理
* /
// 1)。$ curl将成为数据类型curl资源。
$ curl  =  curl_init ();
// 2)。设置cURL选项。
curl_setopt ($ curl , CURLOPT_URL , 'https: //www.buzzfeed.com/mjs538/the-68-words-you-cant-say-on-tv?utm_term=.xlN0R1Go89#.pbdl8dYm3X ' );
curl_setopt ($ curl , CURLOPT_SSL_VERIFYPEER , false );
curl_setopt ($ curl , CURLOPT_RETURNTRANSFER , true );
// 3)。运行cURL(执行http请求)。
$ result  =  curl_exec ($ curl );
$ response  =  curl_getinfo ( $ curl  );
如果( $ response [ 'http_code' ]  ==  '200'  )
   {
    //设置禁止的单词。
    $ banned_words  =  array (“ Prick” ,“ Dick” ,“ ***” );
    //分隔在cURL获取页面上找到的每个单词。
    $ word  =  explode (“” , $ result );
    
   // var_dump($ word);
   对于($ i  =  0 ;  $ i  <=  count ($ word );  $ i ++)
      {
      foreach  ($ banned_words 作为 $ ban ) 
         {
         if  (strtolower ($ word [ $ i ]) ==  strtolower ($ ban ))
            {
             echo  “ word:$ word [$ i] <br />” ;
             echo  “匹配:$ ban <br>” ;
            }
         其他
            {
             echo  “ word:$ word [$ i] <br />” ;
             echo  “没有匹配项:$ ban <br>” ;  
            }
         }
      }
   }  
// 4)。关闭cURL资源。
curl_close ($ curl );
[/码]
 
我被告知要这样做:
 
**将页面加载到字符串中。
在加载的字符串上使用带有“单词边界”的preg_match,并循环浏览被禁止的单词。**
这是更新:
 
[码]
 
<?php
/ *
错误处理
* /
声明( strict_types = 1 );
ini_set ('display_errors' , '1' );
ini_set ('display_startup_errors' , '1' );
error_reporting ( E_ALL );
mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
// 1)。设置禁止的单词。
$ banned_words  =  array (“ Prick” ,“ Dick” ,“ ***” );
// 2)。$ curl将成为数据类型curl资源。
$ curl  =  curl_init ();
// 3)。设置cURL选项。
curl_setopt ($ curl , CURLOPT_URL , 'https://www.buzzfeed.com/mjs538/the-68-
话-
您不能在电视上说?utm_term = .xlN0R1Go89#.pbdl8dYm3X' );
curl_setopt ($ curl , CURLOPT_SSL_VERIFYPEER , false );
curl_setopt ($ curl , CURLOPT_RETURNTRANSFER , true );
// 4)。运行cURL(执行http请求)。
$ result  =  curl_exec ($ curl );
$ response  =  curl_getinfo ( $ curl  );
如果($ response [ 'http_code' ]  ==  '200'  )
     {
          $ regex  =  '/ \ b' ;  //正则表达式字符串语法的开头
          $ regex  。=  implode ('\ b | \ b' , $ banned_words );  //使用正确的正则表达式语法将所有禁止的单词连接到字符串
          $ regex  。=  '\ b / i' ;  //在正则表达式语法中添加结尾。最后我使它不区分大小写
          $ substitute  =  '****' ;
          $ cleanresult  =  preg_replace ($ regex , $ substitute , $ result );
          回声 $ cleanresult ;
     }
  curl_close ($ curl );
  ?>
 
 
答:我的记事本++中出现自动换行问题。现在排序。
此编辑的代码正在运行。
 
[代码]
<?php
/ *
错误处理
* /
// 1)。设置禁止的单词。
$ banned_words = array(“ blow”,“ nut”,“ asshole”);
// 2)。$ curl将成为数据类型curl资源。
$ curl = curl_init();
// 3)。设置cURL选项。
curl_setopt($ curl,CURLOPT_URL,'https://www.buzzfeed.com/mjs538/the-68-words-you-cant-say-on-tv?utm_term=.xlN0R1Go89#.pbdl8dYm3X');
curl_setopt($ curl,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ curl,CURLOPT_RETURNTRANSFER,true);
// 4)。运行cURL(执行http请求)。
$ result = curl_exec($ curl);
如果(curl_errno($ curl)){
    回声'错误:'。curl_error($ curl);
}
$ response = curl_getinfo($ curl);
if($ response ['http_code'] =='200')
{
    $ regex ='/ \ b';     
    $ regex。= implode('\ b | \ b',$ banned_words);   
    $ regex。='\ b / i'; 
    $ substitute ='****';
    $ cleanresult = preg_replace($ regex,$ substitute,$ result);
    回声$ cleanresult;
}
curl_close($ curl);
?>
[/ code]
上一篇: 如何使用Java脚本检查页面上被禁止的单词?
下一篇: 如何使用Bootstrap设置页面样式?