首页 > 后端开发 > 正文

strrev函数php 急求6道PHP笔试题答案

2024-09-11 16:32:17 | 我爱编程网

strrev函数php 急求6道PHP笔试题答案很多朋友对这方面很关心,我爱编程网整理了相关文章,供大家参考,一起来看一下吧!

本文目录一览:

strrev函数php 急求6道PHP笔试题答案

PHPSocket编程过程

PHP,Socket编程过程很多人还不知道,现在让我们一起来看看吧!
PHP Socket编程过程
Socket用于进程间通信,进程间通信通常基于客户端—服务端模型。此时,客户端—服务端是可以彼此交互的应用程序。客户端和服务端之间的交互需要连接。Socket编程负责的就是为应用程序之间建立可进行交互的连接。下面为大家介绍一下PHP Socket编程过程!
使用代码
目的':开发一个客户端用于发送string消息到服务端,服务端将相同的信息反转后返回给客户端。
PHP服务器
第1步:设置变量,如“主机”和“端口”
$host = "127.0.0.1";$port = 5353;// No Timeout set_time_limit(0);
端口号可以是1024 -65535之间的任何正整数。
第2步:创建socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
第3步:绑定socket到端口和主机
创建的socket资源绑定到IP地址和端口号。
$result = socket_bind($socket, $host, $port) or die("Could not bind to socketn");
第4步:启动socket监听
在绑定到IP和端口后,服务端开始等待客户端的连接。在没有连接之前它就一直等下去。
$result = socket_listen($socket, 3) or die("Could not set up socket listenern");
第5步:接受连接
这个函数会接受所建的socket传入的连接请求。在接受来自客户端socket的连接后,该函数返回另一个socket资源,实际上就是负责与相应的客户端socket通信。这里的“$spawn”就是负责与客户端socket通信的socket资源。
$spawn = socket_accept($socket) or die("Could not accept incoming connectionn");
到现在为止,我们已经准备好了服务端socket ,但实际上这个脚本并没有做任何事情。所以为了继续完成上述目标,我们将读取客户端socket消息,然后将接收到的消息反转后发回给客户端socket。
第6步:从客户端socket读取消息
$input = socket_read($spawn, 1024) or die("Could not read inputn");
第7步:反转消息
$output = strrev($input) . "n";
第8步:发送消息给客户端socket
socket_write($spawn, $output, strlen ($output)) or die("Could not write outputn");
关闭socket
socket_close($spawn);socket_close($socket);
这就完成了服务端。现在,我们学习如何创建PHP客户端。
PHP客户端
前两个步骤与服务端相同。
第1步:设置变量,如“主机”和“端口”
$host = "127.0.0.1";$port = 5353;// No Timeout set_time_limit(0);
注:这里的端口和主机应该和服务端中的定义是相同的。
第2步:创建socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
第3步:连接到服务端
$result = socket_connect($socket, $host, $port) or die("Could not connect toservern");
此时和服务端不同,客户端socket不绑定端口和主机。相反,它连接到服务端socket,等待接受来自客户端socket的连接。这一步建立了客户端socket到服务端socket的连接。
第4步:写入服务端socket
socket_write($socket, $message, strlen($message)) or die("Could not send data to servern");
在此步骤中,客户端socket的数据被发送到服务端socket。
第5步:阅读来自服务端的响应
$result = socket_read ($socket, 1024) or die("Could not read server responsen");echo "Reply From Server :".$result;
第6步:关闭socket
socket_close($socket);
完整的代码
服务端(server.php)
// set some variables$host = "127.0.0.1";$port = 25003;// don't timeout!set_time_limit(0);// create socket$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");// bind socket to port$result = socket_bind($socket, $host, $port) or die("Could not bind to socketn");// start listening for connections$result = socket_listen($socket, 3) or die("Could not set up socket listenern");// accept incoming connections// spawn another socket to handle communication$spawn = socket_accept($socket) or die("Could not accept incoming connectionn");// read client input$input = socket_read($spawn, 1024) or die("Could not read inputn");// clean up input string$input = trim($input);echo "Client Message : ".$input;// reverse client input and send back$output = strrev($input) . "n";socket_write($spawn, $output, strlen ($output)) or die("Could not write outputn");// close socketssocket_close($spawn);socket_close($socket);
客户端(client.php)
$host = "127.0.0.1";$port = 25003;$message = "Hello Server";echo "Message To server :".$message;// create socket$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");// connect to server$result = socket_connect($socket, $host, $port) or die("Could not connect to servern"); // send string to serversocket_write($socket, $message, strlen($message)) or die("Could not send data to servern");// get server response$result = socket_read ($socket, 1024) or die("Could not read server responsen");echo "Reply From Server :".$result;// close socketsocket_close($socket);
建立上述文件(server.php和client.php)后,执行如下操作:
复制www目录中的这些文件(假设WAMP),安置于C:wamp。
打开Web浏览器,在地址栏中键入localhost 。
先浏览server.php然后client.php。

strrev函数php 急求6道PHP笔试题答案

php代码 访问者IP是中国的就跳转到中文页面,不是中国的就跳转到英文页面

可能原来服务器有读取ip所在地的接口吧,可能你那个判断不好用了

放到index.php中
<?php
include_once 'class_iplocation.php';
$ip='222.132.78.170';
$iplo= new IpLocation();

$a_provinces=Array (
'0' => '河北',
'1' =>'海南',
'2' => '贵州',
'3' => '广西',
'4' => '广东',
'5' => '甘肃',
'6' => '福建',
'7' => '北京',
'8' => '安徽',
'9' => '河南',
'10' => '黑龙江',
'11' => '湖北',
'12' => '湖南',
'13' => '吉林',
'14' => '江苏',
'15' => '江西',
'16' => '辽宁',
'17' => '内蒙古',
'18' => '宁夏',
'19' => '青海',
'20' => '山东',
'21' => '山西',
'22' => '陕西',
'23' => '上海',
'24' => '四川',
'25' => '天津',
'26' => '西藏',
'27' => '新疆',
'28' => '云南',
'29' => '浙江',
'30' => '重庆',
'31' => '香港',
'32' => '澳门',
'33' => '台湾'
);
$china='';
$strs=$iplo->getlocation($ip);
//print_r($strs);
//echo $strs['country'];
foreach ($a_provinces as $ci)
{
$pos = strpos($strs['country'],$ci);
if ($pos !== false ) {
echo $ci;
$china=$ci;
break;
}
}
echo $china;
if($china!='')
$home='chinese/index.php';
else
$home='english/index.php';

echo "<script language='javascript'>window.location.href='".$home."';</script>";
?>

说明:1.qqwry.dat在qq文件夹下搜就有哦。这三个文件应该放于同一目录
2.类文件:class_iplocation.php
<?php
/**
* IP 地理位置查询类
*
* @author 马秉尧
* @version 1.5
* @copyright 2005 CoolCode.CN
*/
class IpLocation {
/**
* QQWry.Dat文件指针
*
* @var resource
*/
var $fp;

/**
* 第一条IP记录的偏移地址
*
* @var int
*/
var $firstip;

/**
* 最后一条IP记录的偏移地址
*
* @var int
*/
var $lastip;

/**
* IP记录的总条数(不包含版本信息记录)
*
* @var int
*/
var $totalip;

/**
* 返回读取的长整型数
*
* @access private
* @return int
*/
function getlong() {
//将读取的little-endian编码的4个字节转化为长整型数
$result = unpack('Vlong', fread($this->fp, 4));
return $result['long'];
}

/**
* 返回读取的3个字节的长整型数
*
* @access private
* @return int
*/
function getlong3() {
//将读取的little-endian编码的3个字节转化为长整型数
$result = unpack('Vlong', fread($this->fp, 3).chr(0));
return $result['long'];
}

/**
* 返回压缩后可进行比较的IP地址
*
* @access private
* @param string $ip
* @return string
*/
function packip($ip) {
// 将IP地址转化为长整型数,如果在PHP5中,IP地址错误,则返回False,
// 这时intval将Flase转化为整数-1,之后压缩成big-endian编码的字符串
return pack('N', intval(ip2long($ip)));
}

/**
* 返回读取的字符串
*
* @access private
* @param string $data
* @return string
*/
function getstring($data = "") {
$char = fread($this->fp, 1);
while (ord($char) > 0) { // 字符串按照C格式保存,以\0结束
$data .= $char; // 将读取的字符连接到给定字符串之后
$char = fread($this->fp, 1);
}
return $data;
}

/**
* 返回地区信息
*
* @access private
* @return string
*/
function getarea() {
$byte = fread($this->fp, 1); // 标志字节
switch (ord($byte)) {
case 0: // 没有区域信息
$area = "";
break;
case 1:
case 2: // 标志字节为1或2,表示区域信息被重定向
fseek($this->fp, $this->getlong3());
$area = $this->getstring();
break;
default: // 否则,表示区域信息没有被重定向
$area = $this->getstring($byte);
break;
}
return $area;
}

/**
* 根据所给 IP 地址或域名返回所在地区信息
*
* @access public
* @param string $ip
* @return array
*/
function getlocation($ip) {
if (!$this->fp) return null; // 如果数据文件没有被正确打开,则直接返回空
$location['ip'] = gethostbyname($ip); // 将输入的域名转化为IP地址
$ip = $this->packip($location['ip']); // 将输入的IP地址转化为可比较的IP地址
// 不合法的IP地址会被转化为255.255.255.255
// 对分搜索
$l = 0; // 搜索的下边界
$u = $this->totalip; // 搜索的上边界
$findip = $this->lastip; // 如果没有找到就返回最后一条IP记录(QQWry.Dat的版本信息)
while ($l <= $u) { // 当上边界小于下边界时,查找失败
$i = floor(($l + $u) / 2); // 计算近似中间记录
fseek($this->fp, $this->firstip + $i * 7);
$beginip = strrev(fread($this->fp, 4)); // 获取中间记录的开始IP地址
// strrev函数在这里的作用是将little-endian的压缩IP地址转化为big-endian的格式
// 以便用于比较,后面相同。
if ($ip < $beginip) { // 用户的IP小于中间记录的开始IP地址时
$u = $i - 1; // 将搜索的上边界修改为中间记录减一
}
else {
fseek($this->fp, $this->getlong3());
$endip = strrev(fread($this->fp, 4)); // 获取中间记录的结束IP地址
if ($ip > $endip) { // 用户的IP大于中间记录的结束IP地址时
$l = $i + 1; // 将搜索的下边界修改为中间记录加一
}
else { // 用户的IP在中间记录的IP范围内时
$findip = $this->firstip + $i * 7;
break; // 则表示找到结果,退出循环
}
}
}

//获取查找到的IP地理位置信息
fseek($this->fp, $findip);
$location['beginip'] = long2ip($this->getlong()); // 用户IP所在范围的开始地址
$offset = $this->getlong3();
fseek($this->fp, $offset);
$location['endip'] = long2ip($this->getlong()); // 用户IP所在范围的结束地址
$byte = fread($this->fp, 1); // 标志字节
switch (ord($byte)) {
case 1: // 标志字节为1,表示国家和区域信息都被同时重定向
$countryOffset = $this->getlong3(); // 重定向地址
fseek($this->fp, $countryOffset);
$byte = fread($this->fp, 1); // 标志字节
switch (ord($byte)) {
case 2: // 标志字节为2,表示国家信息又被重定向
fseek($this->fp, $this->getlong3());
$location['country'] = $this->getstring();
fseek($this->fp, $countryOffset + 4);
$location['area'] = $this->getarea();
break;
default: // 否则,表示国家信息没有被重定向
$location['country'] = $this->getstring($byte);
$location['area'] = $this->getarea();
break;
}
break;
case 2: // 标志字节为2,表示国家信息被重定向
fseek($this->fp, $this->getlong3());
$location['country'] = $this->getstring();
fseek($this->fp, $offset + 8);
$location['area'] = $this->getarea();
break;
default: // 否则,表示国家信息没有被重定向
$location['country'] = $this->getstring($byte);
$location['area'] = $this->getarea();
break;
}
if ($location['country'] == " CZ88.NET") { // CZ88.NET表示没有有效信息
$location['country'] = "未知";
}
if ($location['area'] == " CZ88.NET") {
$location['area'] = "";
}
return $location;
}

/**
* 构造函数,打开 QQWry.Dat 文件并初始化类中的信息
*
* @param string $filename
* @return IpLocation
*/
function IpLocation($filename = "QQWry.Dat") {
$this->fp = 0;
if (($this->fp = @fopen($filename, 'rb')) !== false) {
$this->firstip = $this->getlong();
$this->lastip = $this->getlong();
$this->totalip = ($this->lastip - $this->firstip) / 7;
//注册析构函数,使其在程序执行结束时执行
register_shutdown_function(array(&$this, '_IpLocation'));
}
}

/**
* 析构函数,用于在页面执行结束后自动关闭打开的文件。
*
*/
function _IpLocation() {
if ($this->fp) {
fclose($this->fp);
}
$this->fp = 0;
}
}
?>

strrev函数php 急求6道PHP笔试题答案我爱编程网

急求6道PHP笔试题答案

我爱编程网(https://www.52biancheng.com)小编还为大家带来急求6道PHP笔试题答案的相关内容。

2:我觉得第二题比较有意思,如果不缓存,用递归100就已经够大了
<?php
$cache_ary = array(0=>1 , 1=>1);

$num = 1200;

function fib_cache($i){

global $cache_ary;

if($i == 1 || $i == 0 ){

return $cache_ary[$i];

}else if(isset($cache_ary[$i])){

return $cache_ary[$i];

}else{

$cache_ary[$i] = fib_cache($i - 1) + fib_cache($i - 2);

return $cache_ary[$i];
}
}

function fib_2($i){

if($i == 0 || $i == 1){

return 1;

}else{

return fib_2($i - 1) + fib_2($i - 2);

}
}
?>

以上就是我爱编程网为大家带来的strrev函数php 急求6道PHP笔试题答案,希望能帮助到大家!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“strrev函数php 急求6道PHP笔试题答案”相关推荐
PHP程序员上机面试题(并附答案,回答好的加分) 急!今天面试PHP遇到个问题是在想不出请帮我想出答案以免下次吃亏谢谢 分数可以在家希望详细点的谢谢
PHP程序员上机面试题(并附答案,回答好的加分) 急!今天面试PHP遇到个问题是在想不出请帮我想出答案以免下次吃亏谢谢 分数可以在家希望详细点的谢谢

PHP程序员上机面试题(并附答案,回答好的加分)某大公司的PHP面试题管理提醒:本帖被haowubai执行取消置顶操作(2009-07-30)1.如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到?[php]echo$_SERVER['PHP_SELF'];echo$_SERVER['SERVER_ADDR'];[/php]2.求两个日期的差数

2024-07-25 09:19:29
PHP是什麽(我想要详细一点的答案) PHP函数问题
PHP是什麽(我想要详细一点的答案) PHP函数问题

PHPMathPHPMath函数PHP是一种广泛使用的脚本语言,它在数学计算方面提供了丰富的内置函数。自PHP早期版本开始支持这些数学函数,它们在处理数值操作时非常实用。下面是一些主要的PHP数学函数及其描述:abs():返回数值的绝对值,确保结果是非负。acos():计算给定角度的反余弦值,返回范围在0到π(180度)之间。acosh():计算给

2024-10-25 12:54:18
php函数基础问题 急!今天面试PHP遇到个问题是在想不出请帮我想出答案以免下次吃亏谢谢 分数可以在家希望详细点的谢谢
php函数基础问题 急!今天面试PHP遇到个问题是在想不出请帮我想出答案以免下次吃亏谢谢 分数可以在家希望详细点的谢谢

php函数基础问题1、int,bool是指函数的返回值类型。2、第一个string是参数类型,第二个string是参数名。3、[,int..]表示可选参数,不输入的话则使用默认值,逗号在前边是跟前边的参数隔开。。。下列有关PHP函数的叙述中,正确的是()。下列有关PHP函数的叙述中,正确的是()。A.在调用的一个函数中,必须要有return语句用于返回B.在调用的一

2024-08-30 11:41:14
PHP 8:函数和方法 PHP是什麽(我想要详细一点的答案)
PHP 8:函数和方法 PHP是什麽(我想要详细一点的答案)

PHP8:函数和方法PHP8的新特性中,对函数和方法的改进亮点颇多,尤其关注于可调用语法、命名参数和多任务支持。PHP8.0引入了可调用对象的匿名函数创建,允许命名参数与位置参数并用,且无需考虑参数顺序。对于私有方法的继承规则,PHP8取消了对final和static修饰符的限制,仅保留了对构造函数的privatefinal约束。可变参数在PHP8中支持替换任意数量的函数参数,提高了灵

2024-08-25 18:07:25
php函数试题 php常识选择题
php函数试题 php常识选择题

php函数基础问题1、int,bool是指函数的返回值类型。2、第一个string是参数类型,第二个string是参数名。3、[,int..]表示可选参数,不输入的话则使用默认值,逗号在前边是跟前边的参数隔开。。。用PHP函数排学生成绩问题&lt;?php/*1.学生成绩0-59不及格,60-70 普通成绩 70-80 良好 80-90 优秀 90-100 优异。现在有三个学生

2024-09-13 15:13:22
php 面试遇到一个问题,思考出了一点门道,但是不知道该怎么写这个函数!
php 面试遇到一个问题,思考出了一点门道,但是不知道该怎么写这个函数!

下列有关PHP函数的叙述中,正确的是()。下列有关PHP函数的叙述中,正确的是()。A.在调用的一个函数中,必须要有return语句用于返回B.在调用的一个函数中,也可以调用这个函数本身C.在调用的一个函数中,可以调用另外一个函数D.在程序代码的书写顺序上,PHP函数必须先书写定义代码,后书写调用代码正确答案:BCphp面试遇到一个问题,思考出了一点门道,但

2024-08-18 15:57:22
PHP怎么用函数方法求2!+4!+6!
PHP怎么用函数方法求2!+4!+6!

PHP怎么用函数方法求2!+4!+6!先定义阶乘运算函数function factorial ($input_num){    try{        if (!is_int($input_num)){            throw new  Exception ('输入必须是一个整数');        }        if ($input_num &lt; 1){     

2024-09-09 11:54:26
php时间函数问题 php自定义函数求1+2*3+4*5+6*7+8*9+10的值
php时间函数问题 php自定义函数求1+2*3+4*5+6*7+8*9+10的值

php问题……php截取字符串几个实用的函数1.substr(源字符串,其实位置[,长度])-截取字符串返回部分字符串&lt;?php$str="phpddt.com";echosubstr($str,2);//pddt.comechosubstr($str,2,3);//pddechosubstr($str,-2);//om负数从结尾开始取?&gt;但是当你截取中文字符串的时候很

2024-09-14 06:54:35