文档章节

PHP实现内部函数explode

刘德生
 刘德生
发布于 2014/06/02 22:35
字数 181
阅读 376
收藏 3
点赞 1
评论 0

PHPAPI void php_explode(zval *delim, zval *str, zval *return_value, long limit)

{

char *p1, *p2, *endp;


endp = Z_STRVAL_P(str) + Z_STRLEN_P(str);


p1 = Z_STRVAL_P(str);

p2 = php_memnstr(Z_STRVAL_P(str), Z_STRVAL_P(delim), Z_STRLEN_P(delim), endp);


if (p2 == NULL) {

add_next_index_stringl(return_value, p1, Z_STRLEN_P(str), 1);

} else {

do {

add_next_index_stringl(return_value, p1, p2 - p1, 1);

p1 = p2 + Z_STRLEN_P(delim);

} while ((p2 = php_memnstr(p1, Z_STRVAL_P(delim), Z_STRLEN_P(delim), endp)) != NULL &&

--limit > 1);


if (p1 <= endp)

add_next_index_stringl(return_value, p1, endp-p1, 1);

}

}

<?php

function php_explode($delim, $str)

{

if(!$delim){

return false;

}

$delim = strval($delim);

$str = strval($str);

if(!$delim || !$str){

return false;

}

$delim_len = strlen($delim);

$str_len = strlen($str);

if($delim_len > $str_len){

return false;

}

$ret = array();

$check_len = $str_len-$delim_len;

for($p=0,$i=0;$i<=$check_len;){

$tmp = substr($str,$i,$delim_len); 

if(strcasecmp($tmp,$delim)==0){

if($i>$p){

                 $ret[] = substr($str,$p,$i-$p);

}else{

$ret[] = '';

}

$i+=$delim_len;

$p=$i;

}else{

++$i;

}

}

if($p<$i){

$ret[] = substr($str,$p);

}else{

$ret[] = '';

}

return $ret;

}


© 著作权归作者所有

共有 人打赏支持
刘德生
粉丝 6
博文 31
码字总数 7734
作品 0
海淀
高级程序员
[PHP]Only variables should be passed by reference

PHP报错:Only variables should be passed by reference $filename = $FILES[$upload_name]['name']; $fileextension = end(explode('.', $filename)); //ERROR ON THIS LINE 报错原因: 获......

王永濤 ⋅ 2015/11/18 ⋅ 0

给各位分享PHP常用函数

数组函数 array_chunk //将一个数组分割成多个数组网站推广 arraykeyexists //检查给定的键名或索引是否存在于数组中 arraykeys //返回数组中所有的键名,并形成新的数组 arraymerge //合并一...

网络营销 ⋅ 2012/02/16 ⋅ 0

PHP函数调用及循环体内定义大型变量效率的研究

最近在用php做网站抓取,使用的是CURL。但是数据抓取的效率太低,分析了一下发现:网速问题最大的瓶颈,但这个我无能为力;但是后来我发现,其实除了网速,提高代码内部执行的效率也很重要。...

苗雨顺 ⋅ 2011/01/27 ⋅ 0

PHP explode() 函数

定义和用法 explode() 函数把字符串分割为数组。 语法 explode(separator,string,limit) 参数 描述 separator 必需。规定在哪里分割字符串。 string 必需。要分割的字符串。 limit 可选。规定...

Amamatthew ⋅ 2014/10/10 ⋅ 0

  php两种导出excel的方法

所需要的:jquery库,phpexcel插件,页面导出excel效果测试文件explode.php,excel导出功能实现文件exp.php和explode_excel.php,文件相关内容在此文下面: explode.php:测试页面内容:访问...

陈映亮 ⋅ 2015/10/30 ⋅ 0

php两种导出excel的方法

所需要的:jquery库,phpexcel插件,页面导出excel效果测试文件explode.php,excel导出功能实现文件exp.php和explode_excel.php,文件相关内容在此文下面: explode.php:测试页面内容:访问...

Adam-Lee ⋅ 2011/08/08 ⋅ 2

ECShop出现Strict Standards: Only variables should be

今天安装ecshop的时候最上面出现了一个错误提示:Strict Standards: Only variables should be passed by reference in F:www.xxxx.comclstemplate.php on line 418 解决办法: 打开clstemp......

GIFCOOL ⋅ 2016/01/08 ⋅ 0

那些年坑过我们的php面试题(1)

写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名。 <?php $url = "http://www.baidu.com/a.php?id=1"; $path = parse_url($url); echo pathinfo($path['path'],PATHINFO_EXTE......

shuaiqi ⋅ 2014/03/19 ⋅ 0

ThinkPHP核心框架实现

之前和朋友一块学过够语言,作为系统级别的语言,没有一定的功力和系统编程 经验,很难快速的搭建起来可堪来用的代码块 刚好在公司在用ThinkPHp,这个框架还算是友好,比较灵活。加上PHP的很...

jackdongting ⋅ 2017/09/01 ⋅ 0

php中二维数组去重小记[转]

数组中重复项的去除 一维数组的重复项: 使用array_unique函数即可,使用实例如下: PHP <?php $aa = array("apple", "banana", "pear", "apple", "wail", "watermalon"); $bb = arrayunique......

fzxu_05 ⋅ 2016/11/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

内核线程、轻量级进程、用户线程

线程与进程概念 在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元; 线程是程序执行的最小单元。 即线程作为调度和分配的基本单位,进程作为资源分配的基本单位 一个进程的组成...

117 ⋅ 22分钟前 ⋅ 0

elasticsearch2.4.6升级为elasticsearch-5.5.0的经历

将elasticsearch-5.5.0 中的配置 path.data 指向原来的数据路径 即 path.data: /usr/local/src/elasticsearch-2.4.6/data 注意: elasticsearch-5.5.0 需要将jdk版本升级到1.8...

晨猫 ⋅ 23分钟前 ⋅ 1

lvm讲解 磁盘故障小案例

1

oschina130111 ⋅ 27分钟前 ⋅ 0

那些提升开发人员工作效率的在线工具

本文转载自公众号 Hollis 作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。 Hollis偏爱使用...

时刻在奔跑 ⋅ 39分钟前 ⋅ 0

restful风格 实现DELETE PUT请求 的web.xml的配置

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframe......

泉天下 ⋅ 44分钟前 ⋅ 0

Shell数组

Shell数组 Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数...

蜗牛奔跑 ⋅ 54分钟前 ⋅ 0

nmap为了开发方便 可以做简单的修改

因为nmap扫描是默认使用的是nse脚本,但是在开发的过程中需要修改后缀(主要是因为后缀为lua才能显示高亮,所以这里用一个取巧的办法) nse_main.lua文件中我们找到如下代码 local t, path = cn...

超级大黑猫 ⋅ 58分钟前 ⋅ 0

springmvc获取axios数据为null情况

场景:前端用了vue没有用ajax与后台通信,用了axios,但是在代码运行过程中发现axios传递到后台的值接受到数据为null。 问题原因:此处的问题在与axios返回给后台的数据为json类型的,后台接...

王子城 ⋅ 今天 ⋅ 0

hadoop技术入门学习之发行版选择

经常会看到这样的问题:零基础学习hadoop难不难?有的人回答说:零基础学习hadoop,没有想象的那么难,也没有想象的那么容易。看到这样的答案不免觉得有些尴尬,这个问题算是白问了,因为这个...

左手的倒影 ⋅ 今天 ⋅ 0

806. Number of Lines To Write String - LeetCode

Question 806. Number of Lines To Write String Solution 思路:注意一点,如果a长度为4,当前行已经用了98个单元,要另起一行。 Java实现: public int[] numberOfLines(int[] widths, Str...

yysue ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部