常见程序搜索关键字转码

个别搜索类的网站因为用户恶意搜索出现误拦截情况,这类网站本身没有非法信息,只是因为把搜索关键字显示在网页中(如下图),可以参考下面方法对输出的关键字进行转码

image.png

DEDECMS程序 

本文针对Dedecms程序进行搜索转码,其它程序原理类似:对搜索结果的关键字进行转码后输出

一:查看网站编码,访问后台下面会显示,GBK和UTF8两个版本

image.png

二:复制下面代码到 include/extend.func.php 文件尾部(根据您的网站编码复制对应的代码,编辑网页时推荐使用notepad、editplus软件)

 UTF-8编码

function CharCodeAt($str)
{
	$strr="";
	for($i=0;$i<mb_strlen($str,'utf-8');$i++){
		$char = mb_substr($str,$i,1, 'UTF-8');
		if (mb_check_encoding($char, 'UTF-8'))
		{
			$ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');
			$strr.="&#".hexdec(bin2hex($ret));
		}
		else
		{
                return null;
		}
	}
	return $strr;
}

GBK编码

function CharCodeAt($str)
{
	$strr="";
	for($i=0;$i<mb_strlen($str,'gb2312');$i++){
		$char = mb_substr($str,$i,1, 'gb2312');
		if (mb_check_encoding($char, 'gb2312'))
		{
			$ret = mb_convert_encoding($char, 'UTF-32BE', 'gb2312');
			$strr.="&#".hexdec(bin2hex($ret));
		}
		else
		{
                return null;
		}
	}
	return $strr;
}

三:修改搜索模板文件templets/default/search.htm  【其它模板可能路径会有变化】

找到: {dede:global name='keyword' function='RemoveXSS(@me)'/}

替换成:{dede:global name='keyword' function='CharCodeAt(RemoveXSS(@me))'/}

四:查看搜索页源代码,查看是否生效

image.png

Discuz 程序,示例针对Discuz!X3.4  GBK版本

一、查看网页编码

        1.网页右键查看源代码

        

blob.png

         2.查看config/config.php 的$_config['output']['charset']

        

blob.png

二、根据编码复制上面的CharCodeAt函数,修改 source/function/function_search.php 文件,加到文件尾部,注意在?> 前面

        

blob.png

三、修改source/module/search/search_forum.php 程序 

在129行添加如下两行代码 

$keyword = CharCodeAt($keyword);

$modkeyword = CharCodeAt($modkeyword);

blob.png

四、查看搜索页源代码,检查是否生效

     

blob.png

原文链接:https://www.west.cn/faq/list.asp?unid=1952 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的Android视频转码程序,使用FFmpeg进行转码,将MP4格式的视频文件转换为AVI格式: ```java import android.os.Environment; import android.util.Log; import java.io.File; import java.io.IOException; public class VideoTranscoder { private static final String TAG = "VideoTranscoder"; private static final String VIDEO_PATH = Environment.getExternalStorageDirectory().getPath() + "/test.mp4"; private static final String OUTPUT_PATH = Environment.getExternalStorageDirectory().getPath() + "/test.avi"; public static void transcode() { File inputFile = new File(VIDEO_PATH); if (!inputFile.exists()) { Log.e(TAG, "Input file not exists"); return; } File outputFile = new File(OUTPUT_PATH); if (outputFile.exists()) { outputFile.delete(); } try { // 初始化FFmpeg FFmpeg.getInstance(context).loadBinary(new LoadBinaryResponseHandler() {}); // 转码命令 String[] cmd = {"-i", inputFile.getPath(), "-c:v", "copy", "-c:a", "copy", outputFile.getPath()}; // 执行转码命令 FFmpeg.getInstance(context).execute(cmd, new ExecuteBinaryResponseHandler() { @Override public void onSuccess(String message) { Log.d(TAG, "Transcode succeed: " + message); } @Override public void onFailure(String message) { Log.e(TAG, "Transcode failed: " + message); } @Override public void onProgress(String message) { Log.d(TAG, "Transcode progress: " + message); } @Override public void onStart() { Log.d(TAG, "Transcode started"); } @Override public void onFinish() { Log.d(TAG, "Transcode finished"); } }); } catch (FFmpegNotSupportedException e) { Log.e(TAG, "FFmpeg not supported", e); } } } ``` 在这个示例中,我们使用了FFmpeg库进行视频转码,首先需要初始化FFmpeg,并加载FFmpeg二进制文件。然后,我们定义了转码命令,使用“-i”参数指定输入文件路径,使用“-c:v”和“-c:a”参数指定输出文件的视频和音频编码格式,最后指定输出文件路径。最后,我们执行FFmpeg命令,并设置相应的回调函数来处理转码过程中的状态和结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wwwwestcn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值