天天看點

PHP7擴充開發之字元串處理PHP7擴充開發之字元串處理前言代碼

這次,我們來看看字元串在php擴充裡面如何處理。

示例代碼如下:

上面的str_concat方法實作了如下功能:

1、當字元串不包含指定字首字元串時,把字首字元串和被檢測字元合并傳回。

2、當字元串包含指定字首字元串時,原樣傳回。

我們将使用php擴充的方式實作str_concat功能。

str_concat方法的php擴充源碼:

zend_string是php7新增的結構。結構如下:

在<code>zend/zend_string.h</code>提供了一些zend_string處理的一些方法。

<code>zstr_</code>開頭的宏方法是zend_string結構專屬的方法。主要有如下幾個:

<code>zstr_val</code> <code>zstr_len</code> <code>zstr_h</code>宏方法分别對應zend_string結構的成員。<code>zstr_hash</code>是擷取字元串的hash值,如果不存在,就調用hash函數生成一個。

代碼中故意把第二個參數轉換成zval。主要是為了展現zend為我們提供了一些列的操作方法。如,zval_get_string, zend_binary_strncmp。

這些方法在<code>zend/zend_operators.h</code>檔案中。

更多宏方法請檢視 zend/zend_api.h中的相關代碼。

<a href="http://www.bo56.com/php7%e6%ba%90%e7%a0%81%e9%98%85%e8%af%bb%e7%ac%94%e8%ae%b0%ef%bc%88%e4%b8%8d%e6%96%ad%e6%9b%b4%e6%96%b0%ef%bc%89/">更多函數說明請檢視</a>