首页 开发编程 正文

php遍历树怎么汇总

使用sed都可以利用正则表达式来匹配和替换响应的内容,用sed命令来实现需要用到正则表达式操作。比如我只想对某个目录下的所有子目录中php类型的源码文件进行查找替换,{}+的作用是在find命令之后使用输出的结果作为参数来执行后面的命令:...

php遍历树怎么汇总,php中什么是遍历?

php遍历就是指遍历数组,表示把数组里面的元素取出来。

所谓遍历(Traversal),是指沿着某条搜索路线,依次对树(或图)中每个节点均做一次访问。访问结点所做的操作依赖于具体的应用问题, 具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。

Linux下如何批量替换多文件字符串?

老胡的办法:

Linux中提到替换,首先想到的就是sed命令。无论是单个文件还是多个文件,使用sed都可以利用正则表达式来匹配和替换响应的内容,针对题主的问题,老胡分析了几种情况,下面一一进行说明:

一、最常见的单字符串替换

单字符串替换是最常见的情况,比如在当前目录的一批文件中,用“man”来替换“ager”。用sed命令来实现需要用到正则表达式操作:

sed -i -"s/man/ager/g" *

正则表达式中,s/M/N/的含义是将M替换为N,g的含义是全局搜索。所以上面的正则表达式的的含义就是在全局内搜索字符串“man”,并且替换为“ager”。

常见的很多文章使用的是类似

sed -i "s/man/ager/g" *

这样的用法,其实这是不够严谨的,如果*代表的文件名恰好是“--debug”这样与sed的参数相同的名字,命令的执行就会出错。所以这里要使用“--”参数定界符,来标记其后的所有字符串都不被视作参数。

二、find与sed搭配使用适配特殊情形

有时候单独使用sed可能比较难适用于一些特殊的情况,比如我只想对某个目录下的所有子目录中php类型的源码文件进行查找替换,单独用sed就不好办到了。一般这个时候需要与find搭配起来使用:

find . -name -type f -name "*.php" -exec sed -i 's/man/ager/g' {} +

-exec <command> { } + 的作用是在find命令之后使用输出的结果作为参数来执行后面的命令,等价于:

find . -name -type f -name "*.php" | xargs -I{} sed -i 's/man/ager/g' {}三、递归遍历所有子目录进行替换

除了使用find之外,利用shell选项配置也可以用for循环来实现递归遍历所有子目录进行替换:

(shopt -s globstar dotglob; for file in **; doif [[ -w $file ]]; thensed -i -'s/man/ager/g' "$file"fidone)

globstar是shell选项,打开后就可以使用**通配符,**代表递归匹配多级目录。最外面的圆括号是为这一段代码创建一个子shell,避免shopt会对全局的shell环境造成影响。

四、其他

例如:

sed -i 's/A/B/g; s/C/D/g; s/E/F/g' file

可以实现批量字符串查找替换;

sed -Ei 's/A|B|C/D/g' file

可以实现将A、B、C都替换为D。类似的还有很多,如果老胡要一个个介绍的话恐怕要敲上几万字。感兴趣的朋友可以在评论区留言讨论。

总结一下,批量替换多文件字符串的思路太多了,主要分为两个步骤:首先要解决的是如何获取文件列表,sed本身就可以通过*访问某目录下的所有文件,此外还可以使用find;其次就是使用何种正则表达式来实现更高效的替换。sed的用法可谓千变万化,还是需要多多练习才好掌握。

如果我的回答对你有点价值,请莫忘点赞加关注,谢谢!欢迎在评论区发表各种意见。

本文为作者原创,严禁转载,违者必究。

如何用php获取网页源码?

1、使用file_get_contents获得网页源代码。这个方法最常用,只需要两行代码即可,非常简单方便。

2、使用fopen获得网页源代码。这个方法用的人也不少,不过代码有点多。

3、使用curl获得网页源代码。使用curl获得网页源代码的做法,往往是需要更高要求的人使用,例如当你需要在抓取网页内容的同时,得到网页header信息,还有ENCODING编码的使,USERAGENT的使用等等。所谓的网页代码,就是指在网页制作过程中需要用到的一些特殊的"语言",设计人员通过对这些"语言"进行组织编排制作出网页,然后由浏览器对代码进行"翻译"后才是我们最终看到的效果。制作网页时常用的代码有HTML,JavaScript,ASP,PHP,CGI等,其中超文本标记语言(标准通用标记语言下的一个应用、外语简称:HTML)是最基础的网页代码。

foreach循环获取第一个和最后一个元素?

引言

对于数组遍历,使用一个 foreach 几乎就完全够用了。那么你一般在编写代码的时候,怎么判断是循环的第一个元素,和最后一个元素呢?

本文通过几个示例,展示实现此功能的多种方法。

学习时间

首先,我们使用最直接,最容易想到的办法,使用一个计数器 $i 用于标记当前的索引位置。如果是第一个,则 $i == 0;如果是最后一个,则 $i 等于数组长度减一。代码如下:

$i = 0; $len = count($array); foreach ($array as $item) { if ($i == 0) { // first } else if ($i == $len 1) { // last } $i++; }

上述代码实现简单直接,但是写的优点太长了,而且也不美观。有没有更优雅一些的方式呢?

我们试着从PHP数组操作函数上着手,内置函数中提供了 reset,用于将指针指向数组的第一个元素;end 函数,将指针指向数组的最后一个元素。下面的代码,就是这样实现的:

foreach($array as $key => $element) { reset($array); if ($key === key($array)) echo 'FIRST ELEMENT!'; end($array); if ($key === key($array)) echo 'LAST ELEMENT!'; }

函数 key() 用于获取当前数组指针所指向的索引值。

而 foreach 循环内将元素匹配到 $key => $element 两个变量,$key 存储循环所指向的索引位置。

PHP 的数组操作函数为我们提供了思路,那么当然还可以用 prev 函数,返回前一个元素的值;使用 next 函数,获取下一个元素的值。

这两个函数都是在获取不到元素时返回 false。那么代码就可以这样来写了:

foreach( $items as $item ) { if( !prev( $items ) ) { echo 'First Item'; } if( !next( $items ) ) { echo 'Last Item'; } }

写在最后

本文通过三种方式实现了定位 foreach 循环体内,第一个元素和最后一个元素的方法。希望大家熟练使用。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

php怎样获取访问者的ipv6地址?

如果你的系统是vista,和设置ipv4地址的方法一样。如果是xp,打开一个dos窗口,照下面方法输入。C:\>netsh netsh>interface ipv6 netsh interface ipv6>add address "本地连接" fe80:a520:1314::1 /* 设定固定的ipv6地址,“本地连接”是指你的机上建立的某个连接的名称 */ netsh interface ipv6>add dns "本地连接" 2001:251:e101:0::2 /* 设定IPv6 DNS地址 */

本文转载自互联网,如有侵权,联系删除