日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 扩展 返回字符串,基于PHP7的PHP扩展开发之四(字符串的处理)

發(fā)布時間:2023/12/20 php 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 扩展 返回字符串,基于PHP7的PHP扩展开发之四(字符串的处理) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目的:熟悉字符串在PHP擴展里面如何處理

要實現(xiàn)的PHP代碼如下:

1、當字符串不包含指定前綴字符串時,把前綴字符串和被檢測字符合并返回。

2、當字符串包含指定前綴字符串時,原樣返回。 我們將使用PHP擴展的方式實現(xiàn)str_concat功能。

function str_concat($prefix, $string) {

$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 lostphp.com");

echo "\n";

?>

基礎(chǔ)代碼

在myecho擴展上增加 str_concat 方法。

實現(xiàn)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);

}

找到PHP_FE_END

在上面增加

PHP_FE(str_concat, NULL)

代碼說明

zend_string是PHP7新增的結(jié)構(gòu)。結(jié)構(gòu)如下:

[codee]

struct _zend_string {

zend_refcounted_h gc; /*gc信息*/

zend_ulong h; /* hash value */

size_t len; /*字符串長度*/

char val[1]; /*字符串起始地址*/

};

[/codee]

在Zend/zend_string.h提供了一些zendstring處理的一些方法。 “ZSTR“開頭的宏方法是zend_string結(jié)構(gòu)專屬的方法。主要有如下幾個:

[codee]

#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)

[/codee]

ZSTR_VAL ZSTR_LEN ZSTR_H宏方法分別對應(yīng)zend_string結(jié)構(gòu)的成員。ZSTR_HASH是獲取字符串的hash值,如果不存在,就調(diào)用hash函數(shù)生成一個。

代碼中故意把第二個參數(shù)轉(zhuǎn)換成zval。主要是為了展現(xiàn)zend為我們提供了一些列的操作方法。如,zval_get_string, zend_binary_strncmp。 這些方法在Zend/zend_operators.h文件中。

更多宏方法請查看 Zend/zend_API.h中的相關(guān)代碼。

編譯生成擴展 參考《基于PHP7的PHP擴展開發(fā)之一(hello word)》

測試

echo str_concat("hello", "word");

echo "\n";

echo str_concat("hello", "hello lostphp.com");

echo "\n";

輸出

hello word

hello lostphp.com

總結(jié)

以上是生活随笔為你收集整理的php 扩展 返回字符串,基于PHP7的PHP扩展开发之四(字符串的处理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产妇女视频 | 精品女同一区二区三区 | 日本国产网站 | 欧美混交群体交 | 在线不卡av | 国产嫩草影院久久久 | 欧美老女人视频 | 黄色av小说在线观看 | 最新视频在线观看 | 国产片天天弄 | 欧美日韩一区二区在线视频 | 亚洲欧洲国产精品 | 国产毛片视频网站 | 禁断介护老人中文字幕 | 日韩欧美一区二区区 | 男女插插网站 | 亚洲一区二区视频在线观看 | 你懂的在线观看视频 | 日韩在线国产 | 久久夜夜夜 | 色哟哟中文字幕 | 中文有码在线 | 91人人爽| 日本免费在线观看视频 | 亚洲成人一二三 | 一级国产特黄bbbbb | 日韩精品一区二区三区国语自制 | 竹菊影视日韩一区二区 | 肉嫁高柳家在线看 | 一区二区三区毛片 | 91av视频在线免费观看 | 九九热综合 | 澳门一级黄色片 | www.亚洲一区二区三区 | 高清三区 | 亚洲另类一区二区 | 自拍偷在线精品自拍偷无码专区 | 老局长的粗大高h | 被灌满精子的波多野结衣 | 国产在线视频一区 | 日韩污视频在线观看 | 中文字幕91 | 久草视频网站 | 在线视频99 | 国产精品一区二区三区免费看 | 人人舔人人干 | 成人黄色短片 | 97精品一区二区三区 | 久久久亚洲国产精品 | 日韩黄网| 6080久久| 天天操天天操天天操天天 | 欧美精品久久久久久久多人混战 | 香港三日本三级少妇66 | 999免费 | 欧洲亚洲女同hd | 国产精品久久久久久久久久久久久久久久 | 一区二区在线观看免费 | 亚洲av乱码久久精品蜜桃 | 精品国产乱码久久 | 天天舔天天| 少妇捆绑紧缚av | 美女福利在线视频 | 国产精品白浆一区二小说 | mm131丰满少妇人体欣赏图 | www.97av.com| 亚洲综合一区在线观看 | 不卡国产视频 | 粉嫩av渣男av蜜乳av | 亚洲无码精品免费 | 超碰97免费在线 | 国产精品久久久久久一区二区 | 亚洲欧美另类国产 | 亚洲色图校园春色 | 制服丝袜天堂 | 美女伊人网| 强行挺进白丝老师翘臀网站 | 亚洲精品免费看 | 99热亚洲| 亚洲同性gay激情无套 | 国产精品第八页 | 欧美一级欧美三级 | 中国极品少妇videossexhd 就要干就要操 | 久热最新 | 91久久国产综合久久91精品网站 | 欧美老女人视频 | 亚洲色偷精品一区二区三区 | 国内视频一区二区三区 | 成人一区二区视频 | 91黄色视屏 | 欧洲一二三区 | 黑帮大佬和我的三百六十五天 | 131mm少妇做爰视频 | 超碰在线公开免费 | 精品久久9999| 日本成人精品 | 精品国产乱码久久久久久婷婷 | 男人和女人日b视频 | 一级黄色伦理片 |