`
webdev2014
  • 浏览: 683336 次
文章分类
社区版块
存档分类
最新评论

felayman——细学PHP

 
阅读更多

文件系统

1. 文件复制

bool copy (string $source , string $dest ) PHP 4, PHP 5)

<?php

header("content-type:text/html;charset=utf-8");

$source_path = "index.php";

$dest_path = "copy_content.php";

//$source_path路径下的文件拷贝到目的路径下

if(copy($source_path, $dest_path)){

echo "复制成功";

}else{

echo "复制失败";

}

?>

2. 判断文件是否存在

bool file_exists( string $filename )

<?php

header("content-type:text/html;charset=utf-8");

$source_path = "ndex.php";

$dest_path = "copy_content.php";

//$source_path路径下的文件拷贝到目的路径下

if(file_exists($source_path)){

if(copy($source_path, $dest_path)){

echo "复制成功";

}else{

echo "复制失败";

}

}else{

echo "文件不存在";

}

?>

3. 文件移动或者重命名

<?php

header("content-type:text/html;charset=utf-8");

//如果两个文件在同一个目录下,则是重命名,如果不在统一目录下则是移动源文件

$old_name = "test.php";

$new_name = "dest/test.php";

if(file_exists($old_name)){

echo "文件存在";

if(rename($old_name, $new_name)){

echo "文件移动成功";

}else{

echo "文件移动失败";

}

}else{

echo "文件不存在";

}

?>

4.删除文件

<?php

header("content-type:text/html;charset=utf-8");

$path = "dest/index.php";

if(file_exists($path)){

if(unlink($path)){

echo "文件删除成功";

}else{

echo "文件删除失败";

}

}

?>

5.建立目录

<?php

header("content-type:text/html;charset=utf-8");

$path = "c:/filename";

if(file_exists($path)){

echo "该目录存在";

}else{

if(mkdir($path)){

echo "创建成功";

}else{

echo "创建失败";

}

}

?>

6.删除目录

<?php

header("content-type:text/html;charset=utf-8");

$path = "c:/filename";

if(!file_exists($path)){

if(mkdir($path)){

echo "创建成功";

}

}else{

if(rmdir($path)){

echo "删除成功";

}else{

echo "删除失败";

}

}

?>

7.遍历目录(文件夹)

<?php

header("content-type:text/html;charset=utf-8");

$path = "/";

if(file_exists($path)){

$file_asc = scandir($path);//升序排列文件

$file_desc = scandir($path,1);//降序排列文件

echo "<p>该目录下的文件:<br>";

foreach ($file_asc as $key=>$value) {

echo $key."===$value"."<hr>";

}

}

?>

8.递归遍历目录文件

<?php

function getDirTree($path){

$tree = array();

$tmp = array();

if(!is_dir($path))

return null;

$files =scandir($path);

foreach ($files as $value) {

if($value=="."||$value=="..")

continue;

$full_path = $path."/".$value;

if(is_dir($full_path)){

$tree[$value] = getDirTree($full_path);

}else{

$tmp[] = $value;

}

}

$tree = array_merge($tree,$tmp);

return $tree;

}

$path = '../Demos';

foreach (getDirTree($path) as $key=>$value) {

if(is_array($value)){

foreach ($value as $para) {

echo $para."<br>";

}

}

echo $key."====".$value."<hr>";

}

?>

GD函数库

1. 载入图片

<?php

//载入图片

//图路径

$path = "风景.jpg";

//避免中文图片名称导致乱码的问题

$path = iconv("utf-8", "gbk", $path);

//从图像文件创建图像句柄

$img = imagecreatefromjpeg($path);

//发送header头部信息

header("content-type:text/html;charset=utf-8");

//输入图像

imagepng($img);

//释放与图像资源有关的内存

imagedestroy($img);

?>

2. 获取图片信息

<?php

function createImg($filepath){

if(!file_exists($filepath)){

return false;

}

$img_info = getimagesize($filepath);

//getimagesiez()函数获取很多参数 第三个参数为图片的类型

switch ($img_info[2]){

case 1:

$func_img = "imagecreatefromgif"; //函数名称

$img_type = "gif";

break;

case 2:

$func_img = "imagecreatefromjpeg"; //函数名称

$img_type = "jpeg";

break;

case 3:

$func_img = "imagecreatefrompng"; //函数名称

$img_type = "png";

break;

default:

return false;

}

$img = $func_img($filepath);

return array($img,$img_type);

}

$path = "风景.gif";

$path = iconv("utf-8", "gbk", $path);

$img_array = createImg($path);

$img = $img_array[0];

$img_type = $img_array[1];

header("content-type:image/$img_type;");

imagepng($img);

imagedestroy($img);

?>

3.添加水印

<?php

/**

* 英文文字水印

*/

$path = "风景.jpg";

$path = iconv("utf-8", "gbk", $path);

//获取图片信息

$img_array = getimagesize($path);

$img_width = $img_array[0];

$img_height =$img_array[1];

//创建图像句柄

$img = imagecreatefromjpeg($path);

//设置水印颜色

$red = imagecolorallocate($img, 255, 0, 0);

//设置字体大小

$font = 9;

//设置水印位置

$str_x = $img_width/4;

$str_y = $img_height/5;

//设水印内容

$str = " wo ai ni";

//$str = iconv("utf-8", "gbk", $str);

//将水印输出到图片上

imagestring($img, 100, $str_x, $str_y, $str, $red);

header("content-type:image/jpeg");

//输出图片

imagejpeg($img);

imagedestroy($img);

?>

3. 添加自定义水印

<?php

$path = "风景.jpg";

$path = iconv("utf-8", "gbk", $path);

//获取图片信息

$img_array = getimagesize($path);

$img_width = $img_array[0];

$img_height =$img_array[1];

//创建图像句柄

$img = imagecreatefromjpeg($path);

//设置水印颜色

$red = imagecolorallocate($img, 255, 0, 0);

//字体路径

$font_file = "mzd.ttf";

//字体倾斜角度

$font_angle = 20;

$font_size = 30;

$x = 100;

$y = 180;

$str = "尚图云相册";

imagettftext($img, $font_size, $font_angle, $x, $y, $red, $font_file, $str);

header("content-type:image/jpeg");

imagejpeg($img);

imagedestroy($img);

?>

4. 添加图片水印

<?php

$path = "风景.jpg";

$path = iconv("utf-8", "gbk", $path);

//获取图片信息

$img_array = getimagesize($path);

$img_width = $img_array[0];

$img_height =$img_array[1];

//创建图像句柄

$img = imagecreatefromjpeg($path);

//设置水印图片

$source_img_path = "Cd.gif";

$source_array = getimagesize($source_img_path);

$source_width = $source_array[0];

$source_height = $source_array[1];

//水印图片句柄

$source_img = imagecreatefromgif($source_img_path);

//设置原图片定位坐标

$dst_x = ($img_width-$source_width)/2;

$dst_y = ($img_height-$source_height)/2;

$src_x =0;

$src_y =0;

$src_w =$source_width;

$src_h =$source_height;

//从水印图片复制到一部分

imagecopy($img, $source_img, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);

header("content-type:image/jpeg");

imagejpeg($img);

imagedestroy($img);

?>

最简单的随机验证码:

<?php

//随机字符串0-1 a-Z

$str = "QWEPOIUYTRLAKSJDHFGZMXNBCqwertyuioplkjhgfdsazxcvbnm1234567890";

//字符创长度

$len = strlen($str);

$num_code = 5;

while($num_code-->0){

$rand_index = rand(0, $len-1);

echo $str[$rand_index];

}

?>

<?php

echo "<br>";

$rand_num =rand();

echo $rand_num."<br/>";

$str = md5($rand_num);

echo $str."<br/>";

$num_code=5;

echo substr($str, 0,$num_code);

?>

动态随即验证码1

<?php

$rand_num =rand();

$str = md5($rand_num);

$num_code=5;

//截取随机码

$str_code = substr($str, 0,$num_code);

//画布大小

$width = 50;

$height =20;

//创建图片句柄

$image = imagecreate($width, $height);

//背景颜色

$bg_color =imagecolorallocate($image, 255, 255, 255);

//边框色

$border_color =imagecolorallocate($image, 0, 0, 0);

//绘制边框

imagerectangle($image, 0, 0, $width-1, $height-1, $border_color);

//设置随机码颜色

$str_color = imagecolorallocate($image, 255, 0, 0);

//字体颜色

$str_size = 5 ;

//设置字体在画布中的位置

$str_x =2;

$str_y =2;

//将随机码添加到画布上

imagestring($image, $str_size, $str_x, $str_y, $str_code, $str_color);

//显示图片

imagepng($image);

//释放资源

imagedestroy($image);

?>

动态随即验证码2

<?php

$rand_num =rand();

$str = md5($rand_num);

$num_code=5;

//截取随机码

$str_code = substr($str, 0,$num_code);

//画布大小

$width = 60;

$height =25;

//创建图片句柄

$image = imagecreate($width, $height);

//背景颜色

$bg_color =imagecolorallocate($image, 255, 255, 255);

//边框色

$border_color =imagecolorallocate($image, 0, 0, 0);

//绘制边框

imagerectangle($image, 0, 0, $width-1, $height-1, $border_color);

for ($i = 0; $i < $num_code; $i++) {

//随机产生验证码颜色

$str_color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));

//字体颜色

$font_size = 10;

//设置验证码位置

$str_x=floor(($width/$num_code)*$i)+rand(0,5);

$str_y =rand(2, $height-15);

//将随机码添加到画布上,每个随即字符都不同颜色大小

imagechar($image, $font_size, $str_x, $str_y, $str_code[$i], $str_color);

}

header("content-type:image/png");

//显示图片

imagepng($image);

//释放资源

imagedestroy($image);

?>

验证码的背景干扰点

<?php

/*

* 绘制干扰点

*/

$width =60;

$height=25;

//图片句柄

$image = imagecreate($width, $height);

//背景颜色

$image_bgcolor = imagecolorallocate($image, 255, 255, 255);

//$边框颜色

$image_bolorcolor = imagecolorallocate($image, 0, 0, 0);

//绘制边框

imagerectangle($image, 0, 0, $width-1, $height-1, $image_bolorcolor);

//设置干扰点个数

$num_distrub_points =200;

for ($i = 0; $i < $num_distrub_points; $i++) {

//随机设置干扰点颜色

$point_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));

//干扰点的位置

$point_x = rand(2, $width-2);

$point_y = rand(2, $height-2);

//绘制干扰点

imagesetpixel($image, $point_x, $point_y, $point_color);

}

header("content-type:image/png");

imagepng($image);

imagedestroy($image);

?>

一个完整的验证码

<?php

/**

* 创建一个完整版的验证码

*/

function createCheckCode($width=60,$height=25,$num_code=5,$num_distrub_points=200){

//创建画布

$image = imagecreate($width, $height);

//绘制背景颜色

$image_bgcolor = imagecolorallocate($image, 255, 255, 255);

//会孩子边框颜色

$image_border_color = imagecolorallocate($image, 0, 0, 0);

//绘制边框

imagerectangle($image, 0, 0, $width-1, $height-1, $image_border_color);

/*

* 产生随机码

*/

$rand_num = rand();

$str = md5($rand_num);

//将随机码全部换成大写

$str_code = strtoupper(substr($str, 0,$num_code));

/*

* 绘制随机码(添加到画布上)

*/

for ($i = 0; $i < $num_code; $i++) {

//每个随机码的颜色

$str_color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));

//随机码的字体大小

$font_size =5;

//随机码在画布中出现的位置

$str_x = floor(($width/$num_code)*$i)+rand(0, 5);

$str_y = rand(2, $height-15);

//将随机码添加到画布中

imagechar($image, $font_size, $str_x, $str_y, $str_code[$i], $str_color);

/*

* 绘制干扰点

*/

}

for ($i = 0; $i < $num_distrub_points; $i++) {

//每个干扰点的颜色

$point_color = imagecolorallocate($image, rand(0,100), rand(0,100), rand(0,100));

$point_x = rand(2, $width-2);

$point_y = rand(2, $height-2);

imagesetpixel($image, $point_x, $point_y, $point_color);

}

header("content-type:image/png");

//输出画布图片

imagepng($image);

imagedestroy($image);

}

createCheckCode();

?>

日期与时间操作

简单的unix时间戳

<?php

//UNIX时间戳

echo time();

?>

获取系统的时间

<?php

header("content-type:text/html;charset=utf-8");

//UNIX时间戳

echo time()."<br/>";

//指定某个时间点的时间戳

echo "指定某个时间点的时间戳:".mktime(0,0,0,12,22,2012)."<br/>";

echo date_default_timezone_get()."<br/>";

$week = array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");

/**

* 获取当前的时间戳信息

*/

$t = getdate();

echo "系统当前时间为:<p>";

echo $t['year']."".$t['mon']."".$t['mday']."".$t['hours']."".$t['minutes']."".$t['second']."";

echo "<br/>今天是一年中的第".$t['yday']."天";

?>

格式化日期输出

<?php

header("content-type:text/html;charset=utf-8");

$week = array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");

/**

* 格式化当前的时间戳信息

*/

$format = 'YmdHis';

$time = date($format);

?>

计算两个时间之间的间隔

<?php

header("content-type:text/html;charset=utf-8");

//当前时间

$from_timestamp = mktime();

//指定时间点

$to_timestamp = mktime(0,0,0,12,22,2015);

//计算时间戳的差

$interval = $to_timestamp- $from_timestamp;

//将时间戳转换成天数

$interval_day = floor($interval/(3600*24));

echo "时间间隔为:".$interval_day."";

?>

设置cookie

<?php

header("content-type:text/html;charset=utf-8");

$name = 'last_login_time';

//cookie的值

$value = date('Y-m-d H-i-s');

//设置cookie,永久有效

setcookie($name,$value);

$name = 'last_login_time';

if(isset($_COOKIE[$name])){

echo "你上一次访问该网站的时间为:".$_COOKIE[$name]."<br/>";

}else{

echo "欢迎您第一次来到本站";

}

?>

Session

开启session,获取session的名称以及修改session的名称

<?php

//开启session

session_start();

//返回session的名称

echo session_name()."<br/>";

//修改session的名称

session_name('haha');

//返回修改后的session名称

echo session_name();

?>

获取session的保存路径

<?php

header("content-type:text/html;charset=utf-8");

session_start();

echo "session_id:".session_id();

//修改session_id

session_id('1234567890');

echo "<hr>修改后的session_id:".session_id()."<hr>";

echo "session文件的保存路径为:".session_save_path();

?>

Session的简单使用

<?php

header("content-type:text/html;charset=utf-8");

session_start();

if(isset($_SESSION['name'])){

echo "已经注册了session<hr>";

}else{

echo "还没有注册session<hr>";

$_SESSION['name'] = 'SESSION名称';

}

if(isset($_SESSION['name'])){

echo "已经注册了session<hr>";

echo $_SESSION['name'];

}else{

echo "还没有注册session<hr>";

}

?>

数据库部分

Mysqli扩展库使用方法-------------------查询

<?php

header("content-type:text/html;charset=utf-8");

//创建一个与服务器链接的实例

$mysqli = new mysqli('localhost','root','123456','test');

if($mysqli->connect_errno){

die("数据库链接失败".$mysqli->connect_error);

}else{

echo "数据库链接成功";

}

$mysqli->select_db("test");

$sql = "select user,pass from user";

$result = $mysqli->query($sql);

if($result){

while ($row = $result->fetch_assoc()){

echo <<<TR

<tr>

<td>{$row['user']}</td>

<td>{$row['pass']}</td>

</tr>

TR;

}

}else{

echo "该语句执行失败";

}

$mysqli->close();

?>

AJAX

1. index

<!DOCTYPE html>

<html>

<head>

<script type="text/javascript" src="ajax.js"></script>

<meta charset="UTF-8">

<title>ajax</title>

</head>

<body>

<form name="myform">

用户:<input type="text" name="username"/>

时间:<input type="text" name="time"/>

</form>

</body>

</html>

2. ajax.js

//获取ajax对象

var xmlHttp = new XMLHttpRequest();

/**

* 1.method http方法,例如:POSTGETPUTPROPFIND。大小写不敏感。

* 2.url 请求的URL地址,可以为绝对地址也可以为相对地址。

* 3.async 布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。

* 4.username 如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。

* 5.password 验证信息中的密码部分,如果用户名为空,则此值将被忽略。

*/

var method = "post";

var url = "test.php";

var async = true;

xmlHttp.open(method, url, async);

//设置回调函数,接收服务器端的信息以进行处理

xmlHttp.onreadystatechange = getServerInfo;

//xmlHttp.abort();调用次方法后,会放弃与服务器端进行数据通信

//想服务器端发送内容,为什么不起作用呢?

xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

alert(xmlHttp.status);

/*****************ajax的回调函数*******************/

function getServerInfo(){

/**

* xmlHttp.readyState是服务器端返回的状态

*/

//alert(xmlHttp.readyState);

/*

if(xmlHttp.readyState==0){

alert("这个是不会弹出的,因为还没有服务器进行连接");

}

if(xmlHttp.readyState==1){

alert("xmlHttp.readyState==1\nxmlHttp对象已经在服务器端建立了,open方法已经执行,但是还没有调用send方法");

}

if(xmlHttp.readyState==2){

alert("xmlHttp.readyState==2\nsend方法已调用,但是当前的状态及http头未知");

}

if(xmlHttp.readyState==3){

alert("xmlHttp.readyState==3\n已接收部分数据,因为响应及http头不全,这时通过responseBodyresponseText获取部分数据会出现错误");

}

*/

if(xmlHttp.readyState==4){

alert(xmlHttp.status);

//alert("xmlHttp.readyState==4\n数据接收完毕,此时可以通过通过responseBodyresponseText获取完整的回应数据");

var headers = xmlHttp.getAllResponseHeaders();

//获取所有响应头信息

//alert(headers);

//获取指定的响应头里面的信息

//获取时间

//alert(xmlHttp.getResponseHeader("Date"));

//获取服务器

//alert(xmlHttp.getResponseHeader("Server"));

//获取服务器脚本版本

//alert(xmlHttp.getResponseHeader("X-Powered-By"));

//获取相应头长度

//alert(xmlHttp.getResponseHeader("Content-Length"));

//获取链接状态

//alert(xmlHttp.getResponseHeader("Connection"));

//获取文档类型

//alert(xmlHttp.getResponseHeader("Content-Type"));

//获取连接持续时间

//alert(xmlHttp.getResponseHeader("Keep-Alive"));

document.myform.time.value = xmlHttp.responseText;

}

}

3.test.php

<?php

$format = 'Y-m-d';

$time = date($format);

echo $time;

?>

4.总结

所谓的ajax就是多一个XMLHttpRequest对象实例与服务器进行异步通信,取得从服务器端返回的信息给用户,已完成局部刷新数据和从后台取数据的功能.需要的技术,html---js---后台脚本(php/asp/jsp),当进行小型数据传输的时候可以不需要xml文件,当存在大量文本的时候就需要xml文件

分享到:
评论

相关推荐

    felayman#elasticsearch-full#Elasticsearch源码分析—Elasticsearch各个Ser

    Elasticsearch各个Service作用说明看了不少Elasticsearch的源码,代码结构多且复杂,调用链巨长务必,其中各个xxxService更是

    c语言中动态内存分配问题

    c语言中动态内存分配问题,细节性问题,代码执行流程

    波士顿房价数据集Boston House Price

    波士顿房价数据集Boston House Price 全网最便宜

    FPGA实现UDP协议(包括ARP、ICMP)

    三种实现FPGA实现UDP协议的代码工程(包括ARP、ICMP),包含使用设计文档。 第一种,米联客的DCP封装包 第二种,正点原子的源码工程 第三种,基于正点原子的赛灵思MAC核的代码工程。

    Red-Hat-Enterprise-Linux-7-RPM-Packaging-Guide-en-US

    Red_Hat_Enterprise_Linux-7-RPM_Packaging_Guide-en-US

    Matlab 三维人脸识别系统 V 4.3.zip

    Matlab 三维人脸识别系统 V 4.3.zip

    信捷XD PLC MODBUS控制阀岛通信 案例程序

    信捷XD PLC MODBUS控制阀岛通信 案例程序

    常用进制转换器16进制10进制2进制转换计算器..exe

    大家好呀!今天来介绍一款常用进制转换器,也就是 16 进制、10 进制、2 进制转换计算器。有了它,你可以轻松实现不同进制之间的快速转换。无论是将 16 进制转换为 10 进制或 2 进制,还是从其他进制转换过来,它都能准确而高效地完成。无论是在计算机编程、数字电路等领域,还是日常对进制转换有需求的时候,它都能成为你的得力小助手,让进制转换不再麻烦,快来试试吧!

    微信小程序:智能排队取号系统 - 地图组件集成

    这款微信小程序是一个创新的智能排队取号系统,专为提高服务行业的效率和顾客满意度而设计。它通过集成地图组件,为用户提供了一个直观、易用的排队和取号解决方案。用户可以在小程序中查看各个服务点的位置,实时了解排队情况,并进行远程取号。 小程序的主要功能包括: 实时排队信息:用户可以实时查看各个服务点的排队情况,包括当前排队人数、预计等待时间等。 远程取号:用户无需到现场即可通过小程序远程取号,节省了排队等待的时间。 地图导航:集成的地图组件可以帮助用户快速找到服务点的具体位置,并提供导航服务。 取号管理:用户可以在小程序中管理自己的取号信息,包括查看、取消等操作。 此外,小程序还支持多种场景,如餐饮、医疗、银行、政府服务等,适用于各种需要排队取号的服务场合。它不仅提高了服务效率,减少了顾客的等待时间,还为商家提供了客流管理和数据分析的工具。

    520节日520节日表白神器.zip

    520节日520节日表白神器520节日520节日表白神器520节日520节日表白神器520节日520节日表白神器

    JAVA语言考试系统的设计与实现(LW+源代码+文献综述+外文翻译+开题报告).zip

    JAVA语言考试系统的设计与实现(LW+源代码+文献综述+外文翻译+开题报告)

    相移法偏移MATLAB代码.zip

    相移法偏移MATLAB代码.zip

    directx修复工具directx修复工具directx修复工具.txt

    directx修复工具directx修复工具directx修复工具directx修复工具

    基于matlab的三维地球建模,需联网.zip

    基于matlab的三维地球建模,需联网.zip

    字符串处理-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

    字符串处理-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

    蓝桥杯-基础题C++: 其压缩包中为C++ code

    参加比赛的一些心得:感觉把比赛得那一门语言基础学会,输入输出([我写的python输入输出](https://blog.csdn.net/qq_41392228/article/details/123614298)),([C++的STL](https://blog.csdn.net/qq_41392228/article/details/124825895)),熟练里面的数据结构,如数组,map等,==主要还是基础==。熟悉了后,可以在刷一下基础题,巩固哈学了的基础知识。把基础学好了,拿个奖是没问题的,正常发挥即可。想那个好的名词,就要看看相关的算法了,主要就是暴力的+优化,BFS,DFS,比较难的就是动态规划,得找转换方程。 python版本的可见:https://blog.csdn.net/qq_41392228/article/details/123616441

    基于 Rust + eBPF 丢弃 GFW DNS 污染包

    基于 Rust + eBPF 丢弃 GFW DNS 污染包 GFW 污染 DNS 的方式为抢答,我们只需要丢弃投毒响应即可获得正确的解析结果。通过 eBPF 我们可以在内核中插入代码,相比在用户态启动代理,这样可以获得更好的性能。 要丢弃投毒响应,重点是找到它们的特征。 以 twitter.com 为例,当向 8.8.8.8 请求 twitter.com 的 A 记录时,正常的响应会返回 2 条结果(1Q2A);而 GFW 只会返回 1 条,但是使用了 2 次抢答。2 次抢答包其中一个 IP Identification = 0x0000,另一个 IP Flags = 0x40(Don't fragment);而正常的响应 IPID 不会是 0 并且 IP Flags = 0。 我们只要 Drop 掉符合对应特征的包即可。这时我们可以验证,twitter.com 可以正确解析(fb 等非 google 服务也正常)。

    分数阶傅里叶变换数字水印matlab程序.zip

    分数阶傅里叶变换数字水印matlab程序.zip

    “互动课堂”微信小程序需求.md

    “互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md“互动课堂”微信小程序需求.md

Global site tag (gtag.js) - Google Analytics