The PHP CLI SAPI allows you to develop PHP-supported shell scripts, even desktop-based scripts. In fact, the tool can be run from the PHP command line. This way, PHP developers can be as productive as Perl, AWK, Ruby, or shell programmers. This article explores the tools built into PHP to let you understand the underlying shell environment and file system in which PHP runs. PHP provides a number of functions for executing external commands, including shell_exec(), exec(), passthru(), and system(). These commands are similar but provide different interfaces for the external programs you run. All of these commands spawn a child process that runs the command or script you specify, and each child process captures the command output as it is written to standard output (stdout).
PHP CLI SAPI allows you to develop PHP supported shell scripts, even desktop-based scripts. In fact, the tool can be run from the PHP command line. This way, PHP developers can be as productive as Perl, AWK, Ruby, or shell programmers. This article explores the tools built into PHP to let you understand the underlying shell environment and file system in which PHP runs. PHP provides a number of functions for executing external commands, including shell_exec(), exec(), passthru(), and system(). These commands are similar but provide different interfaces for the external programs you run. All of these commands spawn a child process that runs the command or script you specify, and each child process captures the command output as it is written to standard output (stdout).
shell_exec()
Listing 1. Counting the number of words using backticks
Copy the code as follows:
#! /bin/sh
number_of_words=`wc -w *.txt`
echo $number_of_words#result would be something like:
#165 readme.txt 388 results.txt 588 summary.txt
# and so on....
In your PHP script, you can run this simple command in shell_exec(), as shown in Listing 2, and get the desired results. It is assumed here that there are some text files in the same directory.
Listing 2. Running the same command in shell_exec()
Copy the code as follows:
$results = shell_exec('wc -w * .txt');
echo $results;
?>
As you can see in Figure 1, the results obtained are the same as those obtained from the shell script. This is because shell_exec() allows you to run an external program through the shell and then returns the result as a string.
Figure 1. Results of running a shell command via shell_exec()
Note that just using the trailing apostrophe operator will give you the same result, as shown below.
Listing 3. Using only the trailing apostrophe operator
Copy the code as follows:
$results = `wc -w *.txt`;
echo $results;
?>
Listing 4 shows a simpler approach.
Listing 4. A simpler method
Copy the code as follows:
echo `wc -w *.txt`;
?>
It’s important to know that a lot can be accomplished through the UNIX command line and shell scripts. For example, you can use pipes to connect commands. You can even create a shell script within it using operators and just call the shell script (with or without parameters as needed).
For example, if you only want to count the words of the first 5 text files in that directory, you can use a vertical bar (|) to connect the wc and head commands. Alternatively, you can place the output inside a pre tag to render it more beautifully in a web browser, as shown below.
Listing 5. More complex shell commands
Copy the code as follows:
$results = shell_exec('wc -w *.txt | head - 5');
echo "".$results . "
";
?>
Figure 2 demonstrates the running list 5 results obtained by the script.
Figure 2. Results from shell_exec() running a more complex shell command
Later in this article, you will learn how to pass arguments to these scripts using PHP. Now you can think of this as a way to run a shell command, but remember that you can only see standard output. If an error occurs with a command or script, you won't see the standard error (stderr) unless you add it to stdout via a pipe.
Official website reference
define("__USED_CHARS__", "abcdefghijklmnopqrstuvwxyz0123456789");
define("__CASE_SENSITIVE__", true); // Use string above or use uppercase / lowercase variant$bf = new chargen(2); // new chargen object, length 2
$bf->generate("whois"); // generate chars and call whois functionfunction whois($str)
{
$domain = $str.".com";$retval = shell_exec("whois $domain" );
if (eregi("no match", $retval))
echo $domain." ist availablen";
else
echo $domain." is unavailablen";
}class chargen
{
private $chars = NULL;
private $maxlength = NULL;protected $buffer = NULL;
function generate($mycallback = false)
{
foreach ($this->buffer as $char)
{
foreach ($this->chars as $nextchar)
{
$retval = $char.$nextchar;
$this->buffer[$retval] = $retval;if ($mycallback && function_exists($mycallback))
$mycallback($retval);
else
echo $retval."n";
}
}if (strlen($retval) == $this->maxlength)
return;$this->generate($mycallback);
}function __construct($maxlength = 8)
{
$chars = array();$this->buffer = array();
array_push($this->buffer, "");for ($i = 0; $i {
$index = substr(__USED_CHARS__, $i, 1);if (__CASE_SENSITIVE__)
{
$this->chars[$index] = $index;
}
else
{
$this->chars[strtolower($index)] = strtolower($index);
$this->chars[strtoupper($index)] = strtoupper($index);
}
}$this->maxlength = $maxlength;
}
}
?>

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

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

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

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

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

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

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

查找方法: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 CS6
Visual web development tools

Notepad++7.3.1
Easy-to-use and free code editor

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 English version
Recommended: Win version, supports code prompts!

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment