文档章节

PHP实现内部函数explode

刘德生
 刘德生
发布于 2014/06/02 22:35
字数 181
阅读 384
收藏 3

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
0
PHP函数调用及循环体内定义大型变量效率的研究

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

苗雨顺
2011/01/27
0
0
PHP explode() 函数

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

Amamatthew
2014/10/10
0
0
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
7
0
ThinkPHP核心框架实现

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

jackdongting
2017/09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Univalsal_ImageLoader源码结构与创建者模式 初步小结

最近在回归看Univalsal_ImageLoader源码,本想自己也实现试试写一个,看源码是为了学习看能否使用,助于自己可以写出有自己逻辑结构的代码。 首先我们初始化ImageLoader的配置初始化的时候,...

DannyCoder
45分钟前
0
0
计算卷积神经网络浮点数运算量

前言 本文主要是介绍了,给定一个卷积神经网络的配置之后,如何大概估算它的浮点数运算量。 相关代码:CalFlops,基于MXNet框架的 Scala 接口实现的一个计算MXNet网络模型运算量的demo。 正文...

Ldpe2G
今天
3
0
Sql语言与MySql数据库

1. 数据库简介 1. 数据库,就是存储数据的仓库,只能通过sql语言来访问,数据库也是一个文件系统。通常,MySQL、Oracle等数据库,也被称为关系型数据库,其保存的不仅仅只是数据,还包括数据...

江左煤郎
今天
3
0
IDEA 取消自动import .*

打开设置 > Editor > Code Style > Java > Scheme Default > Imports ① 将 Class count to use import with "*" 改为 99 (导入同一个包的类超过这个数值自动变为 * ) ② 将 Names count ......

乔老哥
今天
4
0
PostGIS学习笔记(开篇)

PostGIS事实上算是笔者开始写博客的第一篇内容。而事实上那篇博文的内容并不丰富,笔者对PostGIS的了解仍然不多,然而17年在OSGeo课程学习时对PostGIS又有了进一步了解,并逐步发现它的强大。...

胖胖雕
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部