导航:首页 > 编程语言 > 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哪个好 浏览:719
php文字转图片 浏览:328
豆客后台怎么加密码 浏览:574
jpg转换pdf破解版 浏览:978
php基础书籍推荐 浏览:775
服务器与外网不通如何验证 浏览:351
电子版是不是就是文件夹 浏览:50
游戏属性文件加密 浏览:462
如何让安卓手机桌面图标下移 浏览:528
ubuntuphp5环境搭建 浏览:99
赌瘾解压视频 浏览:917
晋城移动dns服务器地址 浏览:294
php开源文库系统 浏览:134
android记事本源码 浏览:407
安卓11小游戏怎么玩法 浏览:190
gif有损压缩 浏览:937
windows下安装linux命令操作 浏览:843
米家app怎么设置进门亮灯 浏览:652
任我行服务器为什么会影响截图 浏览:296
安卓留言板怎么删除 浏览:18