首页 > 编程技术 > php

php str_replace 函数参数为数组时的使用

发布时间:2016-11-25 16:47

本文章来给各位同学介绍关于php str_replace 函数参数为数组时的使用,如果你此教程有兴趣不防进入参考。

str_replace 用于字符串替换

 代码如下 复制代码

<?php
str_replace("php","java","php教程4");
//java教程4
?>

被搜索的变量是字符串

 代码如下 复制代码

<?php
/*
被搜索的变量是字符串
*/
$array=array();
$array[]='php教程1';
$array[]='php教程2';
$array[]='php教程3';
$array[]='php教程4';
$arrayNew=str_replace("php","java",$array);
 
print_r($arrayNew);
/*
Array
(
   
[0] => java教程1
   
[1] => java教程2
   
[2] => java教程3
   
[3] => java教程4
)
*/
?>

也可以处理数组形式的变量,查找的值和替换后的值可以是一对一关系

 代码如下 复制代码

<?php
/*
要查找的变量是数组形式
*/
$array=array();
$array[]='php教程1';
$array[]='php教程2';
$array[]='php教程3';
$array[]='php教程4';
$find=array("php","教程");
$replace=array("java","案例");
$arrayNew=str_replace($find,$replace,$array);
print_r($arrayNew);
/*
Array
(
   
[0] => java案例1
   
[1] => java案例2
   
[2] => java案例3
   
[3] => java案例4
)
*/
?>

查找的值和替换后的值可以是多对一关系

 代码如下 复制代码

<?php
/*
要查找的变量是数组形式
*/
$array=array();
$array[]='php教程1';
$array[]='php教程2';
$array[]='php教程3';
$array[]='php教程4';
$find=array("php","教程");
$arrayNew=str_replace($find,"java",$array);
 
print_r($arrayNew);
 
/*
Array
(
   
[0] => javajava1
   
[1] => javajava2
   
[2] => javajava3
   
[3] => javajava4
)
*/

本文章来给各位同学介绍一下关于一些常用的php 文件系统函数整理,希望这些东西对各位同学会有所帮助哦。


简介:本次介绍的是PHP中与文件操作相关的系统函数,这些函数也是非常的重要,下面天涯依然是对比较常用的进行详细举例说明。

basename — 返回路径中的文件名部分
dirname — 返回路径中的目录部分

    string basename ( string $path [, string $suffix ] )
    string dirname ( string $path )

示例:

 

 代码如下 复制代码
   <?php
    //天涯PHP博客 http://www.111cn.net
    $path = "/home/httpd/www.111cn.net/index.php";
    echo basename($path);
    echo basename($path, '.php');
    echo basename($path, '.xxx');
    echo dirname($path);
    ?>
    //结果:
    index.php
    index
    index.php
    /home/httpd/www.111cn.net

说明:如果文件名是以正确的suffix结束的,那这一部分也会被去掉。

chgrp — 改变文件所属的组
chown — 改变文件的所有者
chmod — 改变文件模式

    bool chmod ( string $filename , int $mode )

示例:

 

 代码如下 复制代码
   <?php
    chmod('/home/phpha.txt', 0755);
    ?>

copy — 拷贝文件

  

 代码如下 复制代码
  if(copy('index.php', 'index.php.bak')){
    echo 'copy success';
    }
    ?>

    //在当前目录下生存了index.php.bak文件

delete — 参见 unlink 或 unset
unlink — 删除文件

 代码如下 复制代码

    <?php
    if(unlink('index.php.bak')){
    echo 'unlink success';
    }
    ?>
    //删除了index.php.bak

disk_free_space — 返回目录中的可用空间
disk_total_space — 返回一个目录的磁盘总大小
diskfreespace — disk_free_space 的别名

  

 代码如下 复制代码
  <?php
    //在 Windows 下:
    echo disk_free_space("C:"), '<br />';
    echo disk_total_space("C:");
    ?>
    //结果:返回的是字节数
    17433419776
    32218386432

fopen — 打开文件或者 URL
fgets — 从文件指针中读取一行
feof — 测试文件指针是否到了文件结束的位置
fread — 读取文件(可安全用于二进制文件)
fwrite — 写入文件(可安全用于二进制文件)
fclose — 关闭一个已打开的文件指针

   

 代码如下 复制代码
<?php
    //天涯PHP博客 http://www.111cn.net
    $fp = fopen('hello.txt', 'r'); //打开一个文件
    $n = 1;
    while(!feof($fp)){
    echo $n, ' - ', fgets($fp), '<br />'; //读取一行并输出
    $n++;
    }
    fclose($fp); //关闭文件
    ?>
    //输出:
    1 - Welcome to my blog:
    2 - http://www.111cn.net

fgetc — 从文件指针中读取字符
fgetcsv — 从文件指针中读入一行并解析 CSV 字段
fgetss — 从文件指针中读取一行并过滤掉 HTML 标记
fputcsv — 将行格式化为 CSV 并写入文件指针
fputs — fwrite 的别名

  

 代码如下 复制代码
  <?php
    $fp = fopen('hello.txt', 'r');
    while(false !== ($char = fgetc($fp))){
    echo $char, '-';
    }
    ?>
    //输出:
    W-e-l-c-o-m-e- -t-o- -m-y- -b-l-o-g-:- - -h-t-t-p-:-/-/-b-l-o-g-.-p-h-p-h-a-.-c-o-m-

file_exists — 检查文件或目录是否存在

   

 代码如下 复制代码
<?php
    if(file_exists('hello.txt')){
    echo 'hello.txt exists';
    }else{
    echo 'hello.txt not exists';
    }
    ?>
    //输出:
    hello.txt exists

file_get_contents — 将整个文件读入一个字符串
file_put_contents — 将一个字符串写入文件
file — 把整个文件读入一个数组中

   

 代码如下 复制代码
<?php
    if($content = file_get_contents('hello.txt')){
    file_put_contents('hello.txt.bak', $content);
    }
    ?>
    //相当于copy了一份hello.txt
    <?php
    if($content = file('hello.txt')){
    print_r($content);
    }
    ?>
    //数组形式,每一行是一个数组成员
    Array
    (
    [0] => Welcome to my blog:
    [1] => http://www.111cn.net
    )

fileatime — 取得文件的上次访问时间
filectime — 取得文件的 inode 修改时间
filegroup — 取得文件的组
fileinode — 取得文件的 inode
filemtime — 取得文件修改时间
fileowner — 取得文件的所有者
fileperms — 取得文件的权限
filesize — 取得文件大小
filetype — 取得文件类型

   

 代码如下 复制代码
<?php
    echo fileatime('hello.txt');
    echo filectime('hello.txt');
    echo filegroup('hello.txt');
    echo filemtime('hello.txt');
    echo fileowner('hello.txt');
    echo substr(sprintf('%o', fileperms('hello.txt')), -4);
    echo filesize('hello.txt');
    echo filetype('hello.txt');
    ?>
    //输出:
    1353329003
    1353329003
    0
    1353330002
    0
    0666
    42
    file

flock — 轻便的咨询文件锁定
fnmatch — 用模式匹配文件名
fflush — 将缓冲内容输出到文件
fpassthru — 输出文件指针处的所有剩余数据
fscanf — 从文件中格式化输入
fseek — 在文件指针中定位
fstat — 通过已打开的文件指针取得文件信息
ftell — 返回文件指针读/写的位置
ftruncate — 将文件截断到给定的长度
glob — 寻找与模式匹配的文件路径

is_dir — 判断给定文件名是否是一个目录
is_executable — 判断给定文件名是否可执行
is_file — 判断给定文件名是否为一个正常的文件
is_link — 判断给定文件名是否为一个符号连接
is_readable — 判断给定文件名是否可读
is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的
is_writable — 判断给定的文件名是否可写
is_writeable — is_writable 的别名
说明:以上函数都是用来判断文件或目录是否符合对应的条件,返回TRUE或FALSE。

lchgrp — Changes group ownership of symlink
lchown — Changes user ownership of symlink
link — 建立一个硬连接
linkinfo — 获取一个连接的信息
lstat — 给出一个文件或符号连接的信息
mkdir — 新建目录
move_uploaded_file — 将上传的文件移动到新位置
parse_ini_file — 解析一个配置文件
pathinfo — 返回文件路径的信息
pclose — 关闭进程文件指针
popen — 打开进程文件指针
readfile — 输出一个文件
readlink — 返回符号连接指向的目标
realpath — 返回规范化的绝对路径名
rename — 重命名一个文件或目录
rewind — 倒回文件指针的位置
rmdir — 删除目录
set_file_buffer — stream_set_write_buffer 的别名
stat — 给出文件的信息
symlink — 建立符号连接
tempnam — 建立一个具有唯一文件名的文件
tmpfile — 建立一个临时文件
touch — 设定文件的访问和修改时间
umask — 改变当前的 umask
clearstatcache — 清除文件状态缓存

总结:其实这么多的文件操作函数,大部分用不到,同时可以看到这些函数与linux命令相似度有多么大

在php中字符串处理有几百上千个函数支持的,可以说php处理字符串的函数是非常强大的,我们只要知道这些函数对于处理字符串都是小菜了,下面我总结一些常用的处理字符串函数。

字符串都是小菜了,下面我总结一些常用的处理字符串函数。

1.确定一个字符串的长度

这是文章中最明显的一个例子,其中的问题是我们如何来确定一个字符串的长度,这里我们不能不提的就是strlen()函数:
$text = "sunny day";

$count = strlen($text);

// $count = 9

2.截取文本,创建一个摘要

新闻性质的网站通常会截取一个大约200字左右的段落,并在次段落的末尾加上省略号来形成一个摘要,这时,你可以使用substr_replace()函数来实现此功能。由于篇幅的原因,这里只演示对40个字符的限制:

$article = "BREAKING NEWS:

In ultimate irony, man bites dog.";

$summary = substr_replace($article, "…", 40);

// $summary = "BREAKING NEWS:

In ultimate irony, man bi…"

3.计算字符串中的字符和单词数

相信您经常会看到一些博客或者新闻类文章,来总结文章的总字数,或者我们也经常看到一些投稿的要求:在一定的字数范围内。这时,你可以使用str_word_count()函数来计算文章字数的总和:

$article = "BREAKING NEWS:

In ultimate irony, man bites dog.";

$wordCount = str_word_count($article);

// $wordCount = 8

有的时候你需要更加严格的控制投稿者的使用空间,例如一些批注等等。如果你想知道有多少个字符来组成一个数组,请使用count_chars()函数。

4.解析CSV文件

数据通常是以逗号分隔的形式存储在文件中的(如一个已知的CSV文件),CSV文件使用一个逗号或者类似于预定义符号,将每列字符串组成一个单独的行。你可能经常创建PHP脚本来导入这些数据,或者解析出你所需要的东西,这些年来,我也看到过很多解析CSV文件的方法,最常见的就是使用fgets()和explode()函数的组合来读取和解析文件,然而,最简单的方法是使用一个函数来解决问题,但它并不属于PHP的字符串处理库里的一部分:fgetcsv()函数。使用fopen()和fgetcsv()函数,我们能够很容易的解析这个文件,同时检索出每个联系人的名字:

$fh = fopen("contacts.csv", "r");

while($line = fgetcsv($fh, 1000, ","))

{ echo "Contact: {$line[1]}";

}

5.转换成一个字符串数组

某些时候,你可能需要创建CSV文件,同时又在这些文件中进行读取,这就意味着你需要将那些同逗号分隔的字符串转换成数据。如果这些数据最初是从数据库检索出的,那么它很可能会只给您提供一个数组。这时,您可以使用implode()函数,将这些字符串转换成一个数组:

$csv = implode(",", $record);

6.将网址转换成超链接

目前许多WYSIWYG编辑器提供的工具栏,都允许用户标记文本,包括超链接。但是,当内容呈现到页面上时,你可以很容易的自动执行此过程,同时保证您不出现额外的错误。要转换成超链接的URL,你可以使用preg_replace()函数,它可以按照正则表达式来搜索一个字符串,并定义了URL的结构:

$url = "W.J. Gilmore, LLC (http://www.wjgilmore.com)";

$url = preg_replace("//([A-z0-9./-]+)/", "$0", $url);

// $url = "W.J. Gilmore, LLC "

7.从一个字符串中去除HTML标签

作为Web开发人员,其中的一个主要工作就是要确保用户输入中不含有危险字符,如果有,这会导致SQL注入或脚本攻击。PHP语言中包含了很多安全方面的功能,这些功能能够帮助你过滤数据,包括延长过滤器。例如,你可以允许用户中带有一些基本的HTML语句,包括一些注释。实现这个功能,你可以使用带有检查功能函数:strip_tags()。它在默认的情况下是从字符串中删除所有的HTML标签,但同时也允许覆盖默认或者你指定的标签。例如,在下面的例子中,你可以除去所有的标签:

$text = strip_tags($input, "  ");

8.比较两个字符串

比较两个字符串,以确保它们是相同的。例如,判断用户第一次与第二次输入的密码是否相同,你可以使用substr_compare()函数来很容易的现实:

$pswd = "secret";

$pswd2 = "secret";

if

(! strcmp($pswd, $pswd2))

{ echo "The passwords are not identical!";

}

如果你想判断两个字符串不区分大小写,可以使用strcasecmp()函数。

9.转换换行符

在本文中我介绍了如何轻松转换成超超链接的URL,现在介绍nl2br()函数,这个函数能够帮助你将任何换行符转换成HTML标签。

$comment = nl2br($comment);

10.应用自动换行

应用自动换行,你可以使用PHP中的这个函数:wordwrap():

$speech = "Four score and seven years ago our fathers brought forth,

upon this continent, a new nation,

conceived in Liberty,

and dedicated to the proposition that all men are created equal.";

echo wordwrap($speech, 30);

执行上面的代码,结果是:

Four score and seven years ago our fathers brought forth, upon this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.


1.拼接字符串
拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作,分别是圆点.分隔符{}操作,还有圆点等号。=来进行操作,圆点等号可以把一个比较长的字符串分解为几行进行定义,这样做是比较有好处的。

2.替换字符串
在PHP这门语言中,提供了一个名字叫做substr_replace()的函数,该函数的作用可以快速的完成扫描和编辑文本内容较多的字符串替换功能。他的语法格式:mixed substr_replace(mixed $string,string $replacement,int $start,[int $length])

3.计算字符串
计算字符串的长度:在PHP中,strlen()函数用来计算字符串的长度并且返回该字符串的长度信息。该语法的格式如下:int strlen(string $string)格式里面的string就是用来指定要计算长度的字符串。

计算字符串的数目:在PHP中,substr_count()函数,可以用来非常方便而且准确的确定一个指定的子字符串在所提供的字符串中有多少个,substr_count()函数的语法格式如下:int substr_count(string $haystack,string $needle[,int $offset=0[,int $length]])在上面的语法中设计的参数的说明如下:haystack指定要检查的字符串,needle用来指定要插入的字符串,offset用来指定在字符串中何处开始搜索,默认值为0,length用来指定搜索的长度。

在PHP中,str_word_count()函数,可以用来非常方便而且准确的确定一个某一个单词在所提供的字符串中有多少个,str_word_count()函数的语法格式如下:mixed str_word_count(string $string[,int $format=0[,string $charlist]])在上面的语法中涉及到的参数的说明如下:string用来指定要进行检查的字符串,format用来指定str_word_count()函数的返回值,这个参数的返回值可以返回三个值,分别是0,1,2。其中返回0的意思是默认值,返回找到的单词的数目,如果返回值为1的话,那么str_word_count()返回的就是一个数组,其中的键名是从0开始的连续整数,值是实际的单词。如果format的值取3的时候,那么str_word_count()函数的返回值就是一个数组,其中,数组的键名是单词在字符串中的位置,值是实际的单词。

4.查找字符串
字符串的查找可以分为很多种,比如说查找子字符串,查找某个字符串的位置等等,PHP分别为每个字符串查找操作提供了相应的函数。

查找子字符串:在PHP语言中,strstr()函数可以用来查找子字符串,该函数返回的结果为子字符串第一次出现的所有的内容,strstr()函数的格式如下:string strstr(string $haystack,mixed $needle)在上面的语法中,涉及到的参数的说明如下haystack:指定被搜索的字符串,needle指定所要搜索的字符串,如果该参数是数字的话,则会匹配器该数字ASCII值的字符。在实际的应用当中,会出现要忽略字母大小写的情况,这个时候,可以使用PHP提供的一个大小写不敏感的查找函数--stristr()函数,该函数的使用方法和strstr()函数的使用是一样的。

查找字符串的位置:strpos()函数的功能和strstr()函数是类似的,只是返回的不是字符串,而是一个字符串在另外一个字符串当中第一次出现的位置,strpos()的语法格式如下:int strpos(string $haystack,mixed $needle[,int $offset =0])在上面的语法中涉及到的参数的说明如下:haystack是要被搜索的字符串,needle指定要进行查找的字符串,offset是指定开始搜索的位置,默认值为0。

strpos()函数是一个对大小写敏感的查找函数,但是在实际的应用过程当中往往会出现需要忽略大小写的,这个时候可以使用PHP提供的一个对大小写不是很敏感的查找函数stripos(),该函数的使用方法和strpos()是一样的。

5.比较字符串
在PHP语言中,比较两个字符串的大小可以通过两种方式来实现:使用"=="操作符比较和使用函数进行比较

使用"=="操作符比较两个字符串的大小:在PHP中比较两个字符串的时候,最容易的方法就是使用双等号操作符(==)。

使用函数比较字符串的大小:在PHP中提供的strcmp()函数可以更加精确的比较两个字符串的大小,语法格式如下int strcmp(string $str1,string $str2)在上述语法中涉及到的参数的说明如下:str1 指定要进行比较的字符串1,str2指定要进行比较的字符串2。这个strcmp谙熟可以确保两个字符串是否完全匹配,并将比较结果以整数的形式返回,这个函数的返回值有以下三种。0:两个字符串是相等的,小于0的时候,第一个字符串是小于后面的字符串的,如果返回值是大于零的,那么就说明,前面的字符串是大于后面的字符串的。

除了strcmp()函数之外,PHP还提供了另外一些比较类似的比较函数,比如strncmp()函数可以选择想要比较的字符串的长度(字符个数),其语法格式如下:int strcmp(string $str1,string $str2,int $len)上面的参数说明 str1:指定要比较的第一个字符串,str2:指定要比较的第二个字符串len:指定每个字符串用于比较的字符个数。

在比较字符串的时候,有的时候需要忽略大小写,就可以使用strcasemp()函数和strncasemp()函数,这两个函数与区分大小写的相应函数的使用方法是完全相同的,strcasecmp()函数和strncasecmp()两个函数的语法格式分别如下:

int strcasecmp(string $str1,string $str2)

int strncasecmp(string $str1,string $str2,int $len)

6.复制字符串
如果需要重复n次显示一个字符或者一个字符串的功能,则最简单的实现方法就是调用复制函数,在PHP中可以使用str_repeat()函数实现字符串的复制,这个函数的语法格式如下:string str_repeat(string $input,int $multiplier)在上述的语法中设计的参数的说明如下input指定要重复的字符串,multiplier指定字符串将被重复的次数。

7.翻转字符串
处理字符串的操作还包括对字符串进行翻转在PHP语言中,使用strrev()函数可以实现反转字符串的功能,strrev()函数的语法格式为 string strrev(string $string)

上面的参数string就是用于指定要进行翻转的字符串。

8.切分,合并字符串
把一个字符串按照某种规则切分成多个字符串,或者把多个字符串合并成一个长的字符串,是在处理字符串操作的时候会经常碰到的问题。使用PHP提供的explode()函数,str_split()函数,implode()函数可以处理类似切分,合并字符串的问题。

切分字符串:explode()函数的功能就是用指定的分隔符把字符串切分成数组,explode()函数的语法格式如下:array explode(string $delimiter,string $string[,int $limit])在上面的语法中涉及到的参数的说明如下:delimiter:指定在哪里分隔字符串,string:指定要进行分割的字符串,limit:指定所返回的数组元素的最大数目,最后的子块将会包含string的剩余部分。

str_split()函数的作用是能够将一个字符串分割成等长度的多个子字符串。str_split()函数的语法格式如下:array str_split(string $string[,int $split_length=1])上面的语法中的参数说明如下:string:指定要分割的字符串,split_length:指定每个数组元素的长度,默认值为"1"。

合并字符串:implode()函数的功能是将数组的元素连接起来成为字符串,implode()函数的语法格式如下:string implode([string $glue],array $pieces)在上述的语法中涉及到的参数的说明如下:glue()指定数组元素之间放置的内容,默认值为""(表示空格字符串)pieces指定要合并为字符串的数组。调用implode()函数可以根据参数所限制的条件获取一个新的字符串,达到合并字符串的目的。

join()是implode()函数的别名,两个函数的用法是完全一样的,需要强调的是,虽然参数glue是可以选的,但是为了使程序拥有更好的兼容性,推荐使用两个参数

 

总结一下字符串的相关操作方法:

1.printf()函数:可以对字符串进行格式化操作
2.sprintf()函数:可以对字符串进行格式化操作,与printf()函数的区别就是需要使用echo才能将格式化后的字符串显示输出。
3.nl2br()函数:可以将字符串中的换行符"n"转换为HTML中的"
"后显示出来。
4.wordwrap()函数:指定从某列字符进行强制换行
5.strtolower()函数:该函数实现的功能是将字符串中的所有的字符全部转换为小写字符
6.strtoupper()函数:该函数的作用就是将字符串中的所有的字符全部转换为大写的字符
7.ucwords()函数:该函数的作用就是将字符串中所有的首字符全部转换为大写字符
8.substr_replace()函数:可以快速完成扫描并且编辑文本内容较多的字符串的功能
9.strlen()函数:可以计算字符串的长度并且返回该字符串的长度
10.substr_count()函数:可以确定一个字符串在所提供的字符串中有多少个
11.str_word_count()函数,可以确定一个字符串中某个单词的出现次数。
12.strstr()函数,可以用来查找子字符串,该函数的返回结果为子字符串第一次出现后的所有内容
13.strpos()函数,功能和strstr()函数是类似的,只是返回的不是字符串,而是一个字符串在另一个字符串中第一次出现的位置。
14.strcmp()函数,该函数的功能可以精确的比较两个字符串的大小
15.strncmp()函数,可以选择要比较的字符串的长度(字符个数)
16.strcasecmp()函数,可以在忽略大小写的时候,对两个字符串进行比较
17.strncasecmp()函数,可以在忽略大小写的前提下,对两个字符串时候进行长度或者字符数目的比较。
18.str_repeat()函数,重复n次显示一个字符或者字符串的功能
19.strrev()函数,提供对字符串进行翻转的操作
20.explode()函数,提供了将某个字符串切分为多个字符串的功能,指定分隔符吧字符串切分成数组。
21.str_split()函数,能够将一个字符串分割成等长度的多个子字符串
22.implode()函数,将数组的元素连接起来成为字符串
23.join()函数,使用方法与implode()函数是一摸一样的,它的作用也是将数组元素连接起来成为一个字符串

PHP pcntl_fork — 在当前进程当前位置产生分支(子进程)。译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程 号,而子进程得到的是0。

注意:

PHP有个pcntl_fork的函数可以实现多进程,但要加载pcntl拓展,而且只有在linux下才能编译这个拓展

1.首先在ubuntu下编译pcntl.so,我的ubuntu下找不到pcntl的包,于是

创建一个文件夹下载了整个PHP包,在里面找到了pcntl包运行如下命令

 代码如下 复制代码

# mkdir php
# cd php
# apt-get source php5
# cd php5-(WHATEVER_RELEASE)/ext/pcntl
# phpize
# ./configure (注一)
# make
# make install phpize 命令是用来准备 PHP 外挂模块的编译环境的。


成功的安装将建立 extname.so 并放置于 PHP 的外挂模块目录中 (预设存放于 /usr/lib/php/modules/ 内) 。
需要调整 php.ini,加入 extension=extname.so 这一行之后才能使用此外挂模块。

void pcntl_exec ( string $path [, array $args [, array $envs ]] )


pcntl_exec — 在当前进程空间执行指定程序

 代码如下 复制代码


$cmds=array(

        array('/home/jerry/projects/www/test2.php'),

        array('/home/jerry/projects/www/test3.php')

);

 


foreach($cmds as $cmd){

        $pid=pcntl_fork();

        if($pid==-1){

        //进程创建失败

            echo '创建子进程失败时返回-1';

            exit(-1);

        }

        else if($pid){

        //父进程会得到子进程号,所以这里是父进程执行的逻辑

            pcntl_wait($status,WNOHANG);

        }

        else{

        //子进程处理逻辑

            sleep(5);

            pcntl_exec('/usr/bin/php',$cmd);

            exit(0);

        }

}


 

例,

实例多图片同步下载

 代码如下 复制代码


#!/usr/bin/php
<?php
// 需要抓取的网页地址
$url = 'http://www.111cn.net';
$content = file_get_contents($url);
preg_match_all('/<imgs+src="(.*?)"/', $content, $matches,PREG_SET_ORDER);
echo "已发现".count($matches)."张图片n";
 
list($sm, $ss) = explode(" ", microtime());
foreach ($matches as $k => $val)
{
 $pid[$k] = pcntl_fork();
 if(!$pid[$k])
 {
  download($url, $val);
  // 子进程要exit否则会进行递归多进程,父进程不要exit否则终止多进程
  exit(0);
 }
 
 if ($pid[$k])
 {
//    pcntl_waitpid($pid[$k], $status, WUNTRACED);
 }
 
}
echo "下载完成n";
 
list($em, $es) = explode(" ", microtime());
 
echo "用时:",($es+$em) - ($ss + $sm),"n";
/**
 * 抓取网页图片
 *
 */
function download($url, $val)
{
 $pic_url = $val[1];
 if (strpos($val[1], '//') !== false)
 {
  ;
 }
 elseif (preg_match('@^(.*?)/@', $val[1], $inner_matches) == 0)
 {
  $pic_url = $url.$val[1];
 }
 elseif (preg_match('@[:.]@', $inner_matches[1], $tmp_matches) == 0)
 {
  $pic_url = $url.$val[1];
 }
 
 $pic = file_get_contents($pic_url);
 
 if ($pic === false)
 {
  return;
 }
 
 preg_match('@/([^/]+)$@', $pic_url, $tmp_matches);
 // 可使用assert处理异常
 $pic_file_name = $tmp_matches[1];
 $f = fopen("tmp/".$pic_file_name, "wb"); #
 fwrite($f, $pic);
 fclose($f);
}
 
/* End of file pcntl_fork.php */

在php中我想要获取时间戳有多种方法,最常用的就是使用time函数与strtotime()函数把日期转换成时间戳了,下面我来给大家分享一下时间戳函数 strtotime用法。

获取指定的年月日转化为时间戳:

pHP时间戳函数获取指定日期的unix时间戳 strtotime('2012-12-7')

示例如下:

 代码如下 复制代码

<?php     echo strtotime('2012-12-7'); //结果:1354838400 ?>

说明:返回2012年12月7日0点0分0秒时间戳。


 将当前年月日转化为时间戳:

 PHP时间戳函数获取当前日期的unix时间戳,

示例如下:

 代码如下 复制代码


<?php     echo $time=intval(time()); ?>

 说明:返回当前时间 年月日时分秒的时间戳。


将时间戳转化为年月日:

 代码如下 复制代码

<?php
    echo date("Y-m-d H:i:s",intval(time()));
?>

 

 代码如下 复制代码
<?php
/*
from:http://www.111cn.net
@date:2013-02-22
*/
echo strtotime ("now"), "n";
echo strtotime ("10 September 2000"), "n";
echo strtotime ("+1 day"), "n";
echo strtotime ("+1 week"), "n";
echo strtotime ("+1 week 2 days 4 hours 2 seconds"), "n";
echo strtotime ("next Thursday"), "n";
echo strtotime ("last Monday"), "n";
?>

PHP时间戳函数获取英文文本日期时间


便于比较,使用date将当时间戳与指定时间戳转换成系统时间

(1)打印明天此时的时间戳strtotime(”+1 day”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2009-01-23 09:40:25

(2)打印昨天此时的时间戳strtotime(”-1 day”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果:2009-01-21 09:40:25

(3)打印下个星期此时的时间戳strtotime(”+1 week”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果:2009-01-29 09:40:25

(4)打印上个星期此时的时间戳strtotime(”-1 week”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果:2009-01-15 09:40:25

(5)打印指定下星期几的时间戳strtotime(”next Thursday”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”)) 结果:2009-01-29 00:00:00

(6)打印指定上星期几的时间戳strtotime(”last Thursday”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”)) 结果:2009-01-15 00:00:00

以上PHP时间戳函数示例可知源码天空,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。

标签:[!--infotagslink--]

您可能感兴趣的文章: