導航:首頁 > 編程語言 > php輸入流

php輸入流

發布時間:2022-08-28 07:31:13

php中put和post區別

1.使用支持和范圍的區別:

PHP提供了對PUT方法的支持,在Http定義的與伺服器的交互方法中,PUT是把消息本體中的消息發送到一個URL,形式上跟POST類似;
PHP 提供對諸如 Netscape Composer 和 W3C Amaya 等客戶端使用的 HTTP PUT 方法的支持;
PHP 4 中,必須使用標準的輸入流來讀取一個 HTTP PUT 的內容;
PUT方法沒有POST方法使用廣泛,但PUT方法卻是向伺服器上傳文件最有效率的方法:
2.上傳過程的區別:

POST上傳文件時,通常需要將所有的信息組合成multipart 傳送過去,然後伺服器再解碼這些信息,解碼過程則必不可少的會消耗內存和CPU資源,這種現象在上傳大文件時尤其明顯;
PUT方法則允許你通過與伺服器建立的socket鏈接傳遞文件的內容,而不附帶其他的信息,效果上更直接;
3.上傳效果的區別:
PHP 接受到 PUT 方法的請求時,會把上傳的文件儲存到和其它用 POST 方法處理過的文件相同的臨時目錄;請求結束時,臨時文件將被刪除。
用來處理 PUT 的 PHP 腳本必須將該文件拷貝到其它的地方;
4. POST和PUT請求根本區別
POST請求的URI表示處理該封閉實體的資源,該資源可能是個數據接收過程、某種協議的網關、或者接收註解的獨立實體;
PUT請求中的URI表示請求中封閉的實體-用戶代理知道URI的目標;
伺服器無法將請求應用到其他資源;
如果伺服器希望該請求應用到另一個URI,就必須發送一個301響應;
用戶代理可通過自己的判斷來決定是否轉發該請求;

② <INPUT TYPE="file" 中的參數是如何傳遞的

ENCTYPE="multipart/form-data"
<form>標簽里要加這樣一個參數,不加這參數,上傳到伺服器的只是文件路徑,豪無用處。上傳的數據會以一定的表單格式上傳到伺服器,這個格式是固定的
你在servlet中request.getInputStream打開輸入流,然後把裡面的數據全部保存到一個文件里去,看看這文件你就知道該怎麼寫了。

③ php里的file_get_contents 第3個參數的問題

這個context是指「流中的內容」。
我們知道OS操作都由輸入輸出流控制。
在開啟一些特殊文件(unix下任何東西都是文件),比如設備,鍵盤、屏幕、網路文件、串口
需要輸入流進行一些操作。這時候就用stream_context_create製作一份「輸入內容」。

實際主要用途,看到大多數實例也是用來進行HTTP操作(實際用途遠不局限於這一種功能)
把HTTP的報頭Header的內容作為輸入流的內容,這種方式開啟文件後獲得服務返回的內容。
原理上還是對系統文件的輸入輸出流操作。

<?php
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
//提交語言編碼和cookie,獲得一個網址的響應內容
$file = file_get_contents('http://www.example.com/', false, $context);
?>

希望不會悲劇,說了半天被看不懂

④ php CI 怎麼獲取 request payload 的值

php 怎麼獲取像這樣的內容啊 用輸入流的獲取方式獲取不到 如file_get_contents("php://input")

⑤ php 生成的二維碼怎麼把參數隱藏

PHP中文件的概念和Java中文件流的概念是類似的,許多文件讀取的函數,其接受的輸入流不僅僅是本地文件系統,也可以是網路文件,下面介紹其中的建議樓主去後盾人看看裡面的東西不錯哦,去學習一下吧

⑥ phpstorm寫的程序在控制台運行時輸出亂碼

產生原因:因為這個開源項目的默認字元編碼不對,所以控制台的字元編碼也自動變成了UTF-8,而鍵盤的輸入流的默認格式是GBK格式,這樣就造成了在GBK轉UTF-8的過程中產生的奇數亂碼錯誤(這個問題的解釋可以在搜索引擎找到)。
解決辦法:
1.在代碼區域右鍵 -> run as -> run configurations -> common(右側) -> console encoding
出現此錯誤,此時的編碼格式應該是UTF-8,選擇Other,這時可能沒有GBK選項,沒有,則執行之後操作。
2.更改該項目的文本文件編碼,項目右鍵 -> properties -> resource -> 先將 text file encoding調整回GBK,然後再回去重新設置console encoding編碼為GBK。
的基礎上,通過進一步的推理而概括出來的,因而不

⑦ php猜數字代碼

猜數游戲有兩種玩法:

第一種:兩個人玩,一方出數字,一方猜。出數字的人要想好一個指定位數的數,數字可重復,不能讓猜的人知道。

猜的人就可以開始猜。每猜一個數,出數者就要說大過或小過出的數。

第二種:兩個人玩,一方出數字,一方猜。出數字的人要先想好一個沒有重復數字的4位數,不能讓猜的人知道。猜的

人就可以開始猜。每猜一個數,出數者就要根據這個數字給出幾A幾B,其中A前面的數字表示位置正確的數的個數,而

B前的數字表示數字正確而位置不對的數的個數。如正確答案為5234,而猜的人猜5346,則是1A2B,其中有一個5的位

置對了,記為1A,而3和4這兩個數字對了,而位置沒對,因此記為2B,合起來就是1A2B。接著猜的人再根據出題者的

幾A幾B繼續猜,直到猜中為止。

下面是PHP代碼實現:

<?php
//標准輸入流和標准輸出流
$stdin=null;
$stdout=null;

/**
*初始化IO流
*/
functioninit(){
global$stdin;
global$stdout;

$stdin=fopen('php://stdin','r');
$stdout=fopen('php://stdout','w');
}

/**
*關閉IO流
*/
functiondestroy(){
global$stdin;
global$stdout;

if(is_resource($stdin)){
fclose($stdin);
}
if(is_resource($stdout)){
fclose($stdout);
}
}

/**
*從命令行讀取一行數據
*/
functionread(){
global$stdin;

$line=fgets($stdin);
returntrim($line,PHP_EOL);//去除換行符
}

/**
*向命令行輸出一行數據
*/
functionwrite($line){
global$stdout;
//轉換編碼
if(stripos(PHP_OS,'winnt')!==false){
$line=iconv('UTF-8','GBK',$line);
}
fwrite($stdout,$line.PHP_EOL);
}

/**
*第一種玩法
*@param$count位數
*/
functionguess_the_number($count=2){
//隨機生成一個$count位數
$min=pow(10,$count-1);
$max=pow(10,$count)-1;
$number=rand($min,$max);
init();
while(1){
write(sprintf('Pleaseinputyournumber(%s-bitdigit),qorquitexit:',$count));
$readStr=read();
//exitprogram
if($readStr=='q'||$readStr=='quit'){
break;
}
$readInt=intval($readStr);
if($readInt>$number){
write('大了');
}elseif($readInt<$number){
write('小了');
}else{
write('恭喜你,猜對了!');
write('Inputccontinuetoplay');
$readStr=read();
if($readStr=='c'||$readStr=='continue'){
$number=rand($min,$max);
}else{
break;
}
}
}
destroy();
}

/**
*得到一個沒有重復數字的四位數
*/
functiongetRandNumber(){
$num=rand(1,9);
$array=array_diff(array(0,1,2,3,4,5,6,7,8,9),[$num]);
shuffle($array);
$subarr=array_slice($array,0,3);//再取3個數字
$str=implode('',array_merge([$num],$subarr));
returnintval($str);
}

/**
*第二種玩法
*/
functionguess_the_number2(){
$number=getRandNumber();
$len=4;//四位數
init();
while(1){
write(sprintf('Pleaseinputyournumber(%s-bitdigit),qorquitexit:',$len));
$readStr=read();
//exitprogram
if($readStr=='q'||$readStr=='quit'){
break;
}
$readInt=intval($readStr);
if($readInt==$number){
write('恭喜你,猜對了!');
write('Inputccontinuetoplay');
$readStr=read();
if($readStr=='c'||$readStr=='continue'){
$number=getRandNumber();
}else{
break;
}
}else{
//判斷幾A幾B
$readInt=str_pad($readInt,$len,'0',STR_PAD_LEFT);//不足四位的補足四位
$number=strval($number);
$readArr=str_split($readInt,1);//casttoarray
$numArr=str_split($number,1);
$aval=0;//幾A
$bval=0;//幾B
for($i=0;$i<$len;$i++){
if($readArr[$i]==$numArr[$i]){
$aval++;
unset($readArr[$i],$numArr[$i]);
}
}
$bval=count(array_intersect($readArr,$numArr));
write(sprintf('%sA%sB',$aval,$bval));
}
}
destroy();
}

if(PHP_SAPI=='cli'){
//guess_the_number(1);
guess_the_number2();
}else{
echo'Pleaserunundercommandline!';
exit;
}

⑧ 請問哪位知道,php里 file_get_contents("php://input");這句是什麼意思

客戶端使用ajax技術中的post方法向伺服器發送的所有內容都可以在伺服器中的一個特殊文件php://input中找到.
file_get_contents() 函數把整個文件讀入一個字元串中。

和 file() 一樣,不同的是 file_get_contents() 把文件讀入一個字元串。

file_get_contents() 函數是用於將文件的內容讀入到一個字元串中的首選方法。如果操作系統支持,還會使用內存映射技術來增強性能。

語法
file_get_contents(path,include_path,context,start,max_length)參數 描述
path 必需。規定要讀取的文件的路徑。
include_path 可選。如果也想在 include_path 中搜尋文件的話,可以將該參數設為 "1"。
context 可選。規定文件句柄的環境。

context 是一套可以修改流的行為的選項。若使用 null,則忽略。

start 可選。規定在文件中開始讀取的位置。該參數是 PHP 5.1 新加的。
max_length 可選。規定讀取的位元組數。該參數是 PHP 5.1 新加的。
整個函數把文件內容變成字元串了,你echo看看吧

⑨ stringstream

正好以前寫過一個文章介紹這個的:

stringstream(字元串IO流)的簡單介紹及應用

最近做TopCoder的題比較多,特地看了一下stringstream的應用,發現很簡單很好使。發出來與大家共享。
stringstream,顧名思義,就是字元串的輸入輸出流,跟fstream很相似。

以星期五比賽中的那個<English-Number Traslator>為例(TOJ-2303)
http://acm.tju.e.cn/toj/showp.php?pid=2303
這題要求讀入一行中的多個字元串,然後進行翻譯。
使用C++中的stringstream可以很簡單地處理讀入的問題:

#include <cstdio>
#include <string>
#include <sstream> //stringstream的頭文件
using namespace std;

char str[1000];
gets(str); //讀入一整行字元串
stringstream ssin((string)str); //定義一個字元串流
//這個就跟fstream一樣,同樣,也有隻用做讀入的istringstream, 只輸出的ostringstream
//輸入輸出的用法和cin, cout一模一樣

//然後我們從ssin中讀入每一個單詞:
string word[20];
int n = 0;
while(ssin>>word[n]) n++;

//這樣,就把這一行的單詞依次讀到word[]里來了。

注意stringstream和sscanf的區別:
如果str[] = "one two three four";
如果按照這么讀:
char word[20][20];
for(i = 0; i < n; i++)sscanf(str, "%s", word[i]);
那麼你讀入的每一個word[i]都是單詞"one",而用stringstream則是將這幾個單詞依次讀入。
原因很簡單,stringstream是對一個確定的字元串進行操作,內部有一個指針標記讀到哪了,而sscanf則每次都是從頭對str進行讀入。

雖然在ACM中不推薦使用C++中的輸入輸出流,但小數據量的題目偶爾為之,還是能大大提高寫代碼的速度和准確率的。

關於stringstream的更多內容,大家可以參考:
http://www.cppreference.com/

其實C中有一個strtok()函數也可以起到相同的作用,可以將一個句子中的單詞給分別讀出來,具體內容可以參見本版第1405貼,WTommy發的《發現一個好用的函數strtok》,不過用相比之下stringstream用起來就簡單得多了。

閱讀全文

與php輸入流相關的資料

熱點內容
脈脈app干什麼用的 瀏覽:357
拽姐是哪個app 瀏覽:858
雲伺服器刪除了還有嗎 瀏覽:232
macbook可以用單片機嘛 瀏覽:307
南陽php招聘 瀏覽:814
去哪裡找按摩師很漂亮的app 瀏覽:818
86x99用簡便演算法計算 瀏覽:830
php截圖flash 瀏覽:273
卸載聯想app哪個好 瀏覽:719
php文字轉圖片 瀏覽:331
豆客後台怎麼加密碼 瀏覽:574
jpg轉換pdf破解版 瀏覽:978
php基礎書籍推薦 瀏覽:777
伺服器與外網不通如何驗證 瀏覽:351
電子版是不是就是文件夾 瀏覽:51
游戲屬性文件加密 瀏覽:464
如何讓安卓手機桌面圖標下移 瀏覽:530
ubuntuphp5環境搭建 瀏覽:101
賭癮解壓視頻 瀏覽:919
晉城移動dns伺服器地址 瀏覽:296