php数据脱敏 数据脱敏技术方案

php中数据过滤的问题

我来解释一下吧

在巨野等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、成都网站制作 网站设计制作定制网站,公司网站建设,企业网站建设,品牌网站设计,成都全网营销,成都外贸网站建设,巨野网站建设费用合理。

preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string);

去掉控制字符,你google一下ascii table就知道了,php里面 - 代表范围,比如\x00-\x08指的是ASCII代码在\x00到\x08范围的字符,\x0A和\x0D代表回车换行,所以没包含在这个里面,否则直接\x00-\x1F了,

$string = str_replace(array("\0","%00","\r"),'',$string);

\0表示ASCII 0x00的字符,通常作为字符串结束标志

$string = preg_replace("/(?!(#[0-9]+|[a-z]+);)/si",'',$string);

我们知道HTML里面可以用xx;来对一些字符进行编码,比如 (空格), ߷ Unicode字符等,A(?!B) 表示的是A后面不是B,所以作者想保留 ߷类似的 HTML编码字符,去掉其他的问题字符,比如 123; nbsp;

str_replace(array("%3C",''),'',$string);

第一个''多余吧,%3C是编码以后的 , 一般用在URL编码里

str_replace(array("%3E",''),'',$string);

str_replace(array('"',"'","\t",' '),array('"',"'",'',''),$string);

略过

有问题再追问

php如何解决查询出来的数据是乱码问题

乱码一直是困扰PHP初学者的一个非常大的问题,现在总结下造成乱码的原因及解决方法:

一、HTML页面编码:meta http-equiv=content-type content=text/html; charset=utf-8 这里的编码要和数据库编码,及连接数据库编码;

二、文件在存储编码:比如文件inde.php,改变其存储编码为所需编码。只需用EditPlus等文本编辑软件 文件另存为,在编码中选择正确的编码(这点很多人都会忽略);

三、数据库编码:比如用的是phpmyadmin 选择数据库后,选择操作选项。下面有一个整理,这里面也要设置成统一的编码;

四、表编码:操作和第三点类似。这里就不重复了;

五、字段编码:在建表的建字段的时候,有个整理。如果内容有汉字,就一定要改成统一的编码;

六、连接数据库时mysql_select_db()后面,要加一句 mysql_query( set names utf8 );

七、 (刚遇到的)本地测试成功后的网站,传到网上去,会有乱码。可能会是在本地导出数据时没有选择正确的编码,所以才会在导入到web上后有乱码问题。

在PHP中怎么解决大量数据处理的问题

mysql_query函数查询的方式是查询出全部结果后缓存到内存中,这样就会出现超内存的现象,使用另外一个函数mysql_unbuffered_query可以解决这个问题,mysql_unbuffered_query不会缓存结果集,而是查询出来数据后立马对结果集进行操作,也就是便查询边返回,这样就不会出现超出内存的现象,但是使用mysql_unbuffered_query的是时候不能使用 mysql_num_rows() 和 mysql_data_seek()。并且向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。例如:

使用缓存结果集的代码:

function selecttest()

{

try {

$pdo = new PDO("mysql:host=localhost;dbname=test", 'root', '123456');

// 不使用缓存结果集方式

// $pdo-setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

$sth = $pdo-prepare('select * from test');

$sth-execute();

echo '最初占用内存大小:' . memory_get_usage() . "\n";

$i = 0;

while ($result = $sth-fetch(PDO::FETCH_ASSOC)) {

$i += 1;

if ($i 10) {

break;

}

sleep(1);

print_r($result);

echo '占用内存大小:' . memory_get_usage() . "\n";

}

} catch (Exception $e) {

echo $e-getMessage();

}

}

执行时将会报超出内存的错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 204800000 bytes) in E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php on line 56

Call Stack:

0.0005 135392 1. {main}() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:0

0.0005 135568 2. test-selecttest() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:85

0.0050 142528 3. PDOStatement-execute() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:56

将上面代码中的$pdo-setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);一行的注释去掉后将不在缓存结果集,这时运行该函数的结果如下:

最初占用内存大小:144808

Array

(

[id] = 1

[a] = v

[b] = w

[c] = i

)

占用内存大小:145544

Array

(

[id] = 2

[a] = b

[b] = l

[c] = q

)

占用内存大小:145544

Array

(

[id] = 3

[a] = m

[b] = p

[c] = h

)

占用内存大小:145536

Array

(

[id] = 4

[a] = j

[b] = i

[c] = b

)

占用内存大小:145536

可以看到,这时返回一条数据内存占用非常的小,也就700多字节,这样就不会出现超出内存的错误了。

php用户数据脱敏

这个nickname可以经过处理才输出,先用内置函数截取第一个字符,同时并获取这个nickname的长度,然后再把刚才截取的拼接上长度-1的*,这样就能达到你说的效果了,思路是这样,希望对你有帮助


分享文章:php数据脱敏 数据脱敏技术方案
新闻来源:http://pwwzsj.com/article/doigjoc.html