wordpress 搜索框位置,重庆官网seo技术厂家,做集团网站的,培训网站系统建设标签#xff1a;本文和大家分享的主要是PHP7扩展开发中字符串的处理相关知识#xff0c;希望通过本文的分享能帮助大家更好的学习php。这次#xff0c;我们来看看字符串在PHP扩展里面如何处理。示例代码如下#xff1a;$len strlen($prefix);$substr substr($string, 0, …标签本文和大家分享的主要是PHP7扩展开发中字符串的处理相关知识希望通过本文的分享能帮助大家更好的学习php。这次我们来看看字符串在PHP扩展里面如何处理。示例代码如下$len strlen($prefix);$substr substr($string, 0, $len);if ($substr ! $prefix) {return $prefix. .$string;} else {return $string;}}echo str_concat(hello, word);echo \n;echo str_concat(hello, hello bo56.com);echo \n;?上面的str_concat方法实现了如下功能1、当字符串不包含指定前缀字符串时把前缀字符串和被检测字符合并返回。2、当字符串包含指定前缀字符串时原样返回。我们将使用PHP扩展的方式实现str_concat功能。代码实现str_concat方法str_concat方法的PHP扩展源码PHP_FUNCTION(str_concat){zend_string *prefix, *subject, *result;zval *string;if (zend_parse_parameters(ZEND_NUM_ARGS(), Sz, prefix, string) FAILURE) {return;}subject zval_get_string(string);if (zend_binary_strncmp(ZSTR_VAL(prefix), ZSTR_LEN(prefix), ZSTR_VAL(subject), ZSTR_LEN(subject), ZSTR_LEN(prefix)) 0) {RETURN_STR(subject);}result strpprintf(0, %s %s, ZSTR_VAL(prefix), ZSTR_VAL(subject));RETURN_STR(result);}代码说明zend_string是PHP7新增的结构。结构如下struct _zend_string {zend_refcounted_h gc; /*gc信息*/zend_ulong h; /* hash value */size_t len; /*字符串长度*/char val[1]; /*字符串起始地址*/};在 Zend/zend_string.h 提供了一些zend_string处理的一些方法。ZSTR_ 开头的宏方法是zend_string结构专属的方法。主要有如下几个#define ZSTR_VAL(zstr) (zstr)-val#define ZSTR_LEN(zstr) (zstr)-len#define ZSTR_H(zstr) (zstr)-h#define ZSTR_HASH(zstr) zend_string_hash_val(zstr)ZSTR_VAL ZSTR_LEN ZSTR_H 宏方法分别对应zend_string结构的成员。ZSTR_HASH是获取字符串的hash值如果不存在就调用hash函数生成一个。代码中故意把第二个参数转换成zval。主要是为了展现zend为我们提供了一些列的操作方法。如zval_get_string, zend_binary_strncmp。这些方法在 Zend/zend_operators.h 文件中。来源博学无忧标签