Linux下为了方便,有时候会直接使用命令行的方式来执行php程序,比如一些crontab任务之类,但通常写出来的大部分php程序,都没有考虑到命令行下的一些情况,直接使用GET进行参数传递也是常态,但这在命令行下却很无奈,尤其是传递多个GET参数时,连命令都无
Linux下为了方便,有时候会直接使用命令行的方式来执行php程序,比如一些crontab任务之类,但通常写出来的大部分php程序,都没有考虑到命令行下的一些情况,直接使用GET进行参数传递也是常态,但这在命令行下却很无奈,尤其是传递多个GET参数时,连命令都无法正确执行——GET多参数分隔符&会妨碍命令的执行。
1、PHP CLI的参数传递方式
PHP CLI下参数的传递是使用Linux命令行的方式进行,将参数值按照指定的先后顺序依次排列,一旦顺序错误,最终传送的结果也将错误,而且,如果程序要支持命令行参数,还需要专门的分析和拆开$argv数组,如果是修改现有程序,工作量将会更大。
2、捕获参数,组装伪$_GET和$_REQUEST数组
命令行下是没有$_GET等变量的,但如果使用GET进行参数传递,程序中肯定会有对诸如$_GET和$_REQUEST数组的调用。如果要降低修改的工作量,最简单的办法就是,抓获CLI传递的参数,再将参数组装成一个$_GET和$_REQUEST数组。
为了避开cli中对参数的先后顺序的要求,让命令执行使用更容易分辨更让人熟悉的URL参数传递方式,可以按如下的格式来传递参数并捕获:
<p class="line">1</p> |
<p class="line">php filename.php "name=Roges&height=187.96&weight=99.79"</p> |
注意,命令行中使用&
符号时,必须要将其用引号括住,否则你会有意外的惊喜。
3、实现
想到了过程,实现起来就比较简单了,一个比较简单的实现如下:
<p class="line">1</p> |
<p class="line">// if file was executed by php cli, cli paramertes will be convert</p><p class="line">// to $_GET and $_REQUEST array.</p><p class="line">if(isset($argv) AND count($argv) </p><p class="line"> // GET paramertes are always follow the page url with ? symtax,</p><p class="line"> // it show be removed.</p><p class="line"> $argv[1] = str_replace("?", '', $argv[1]);</p><p class="line"> $params = explode('&', $argv[1]);</p><p class="line"> $_REQUEST = array();</p><p class="line"> foreach($params as $p) {</p><p class="line"> //get the location of the '='</p><p class="line"> $eq_loc = strpos($p, '=');</p><p class="line"> $_REQUEST[substr($p, 0, $eq_loc)] = substr($p, $eq_loc + 1, strlen($p) - $eq_loc);</p><p class="line"> }</p><p class="line"> $_GET = $_REQUEST;</p><p class="line">}</p> |
将这个代码存储为文件,再在需要使用的文件头部进行引用即可。当在命令行下执行脚本时,使会进行转换,否则是不会进行任何操作的。
4、执行效果
将上面的代码保存然后在最后加上如下的两句,便可查看参数传递的效果:
<p class="line">1</p> |
<p class="line">echo '$_REQUEST: ';</p><p class="line">print_r($_REQUEST);</p><p class="line">echo '$_GET: ';</p><p class="line">print_r($_GET);</p> |
将文件命令为cli_get.php,在命令行中执行,结果如下:
<p class="line">1</p> |
<p class="line">Roges@US:~/www$ php cli_get.php "name=Roges&height=187.96&weight=99.79"</p><p class="line">$_REQUEST: Array</p><p class="line">(</p><p class="line"> [name] => Roges</p><p class="line"> [height] => 187.96</p><p class="line"> [weight] => 99.79</p><p class="line">)</p><p class="line">$_GET: Array</p><p class="line">(</p><p class="line"> [name] => Roges</p><p class="line"> [height] => 187.96</p><p class="line"> [weight] => 99.79</p><p class="line">)</p> |
手机选来选去,还是黑莓靠谱,大屏幕目前只是玩具而已。
Linux下为了方便,有时候会直接使用命令行的方式来执行php程序,比如一些crontab任务之类,但通常写出来的大部分php程序,都没有考虑到命令行下的一些情况,直接使用GET进行参数传递也是常态,但这在命令行下却很无奈,尤其是传递多个GET参数时,连命令都无法正确执行——GET多参数分隔符&会妨碍命令的执行。
1、PHP CLI的参数传递方式
PHP CLI下参数的传递是使用Linux命令行的方式进行,将参数值按照指定的先后顺序依次排列,一旦顺序错误,最终传送的结果也将错误,而且,如果程序要支持命令行参数,还需要专门的分析和拆开$argv数组,如果是修改现有程序,工作量将会更大。
2、捕获参数,组装伪$_GET和$_REQUEST数组
命令行下是没有$_GET等变量的,但如果使用GET进行参数传递,程序中肯定会有对诸如$_GET和$_REQUEST数组的调用。如果要降低修改的工作量,最简单的办法就是,抓获CLI传递的参数,再将参数组装成一个$_GET和$_REQUEST数组。
为了避开cli中对参数的先后顺序的要求,让命令执行使用更容易分辨更让人熟悉的URL参数传递方式,可以按如下的格式来传递参数并捕获:
<p class="line">1</p> |
<p class="line">php filename.php "name=Roges&height=187.96&weight=99.79"</p> |
原文地址:在PHP CLI下使用类似GET的方法传参, 感谢原作者分享。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Atom editor mac version download
The most popular open source editor

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SublimeText3 Chinese version
Chinese version, very easy to use
