この記事では、主に PHP ソース コード 3 についての簡単な説明を紹介します。strrchr、strstr、stristr 関数については、必要な友人に参照していただけるよう共有します。 string strrchr (string haystack, string needle)
干し草の最後の針 (文字) の後の文字列を返します
針が数値の場合、この数値をこの値に対応する文字に変換します針は複数の文字列です。最初の文字を取ります。
haystack が数値の場合、数値は直接文字列に変換されます。
プログラム内で、convert_to_string_ex(haystack);
を呼び出します。この関数は基本的に (上記と同様) いくつかの特殊な状況を処理します。
string strstr (string haystack, string needy)
コードには、以下のコードに示すように、学習する価値のある特別な詳細がいくつかあります。
static inline char *zend_memnstr(char *haystack, char *needle, int needle_len, char *end){ char *p = haystack; char ne = needle[needle_len-1]; if(needle_len > end-haystack) { return NULL; } end -= needle_len; // 优化细节一,仅查找end-needle_len长度的字符串 while (p <= end) { // 优化细节二,此处先判断字符串的开头和结尾的字符是否一样,如果一样则再判断整个字符串,提升性能 if ((p = (char *)memchr(p, *needle, (end-p+1))) && ne == p[needle_len-1]) { if (!memcmp(needle, p, needle_len-1)) { return p; } } if (p == NULL) { return NULL; } p++; } return NULL;}
上記のコードは、strstr 関数と stristr 関数によって実装されたコア コードです。 機能: haystack 内で針が最初に出現する位置を検索します。
string stristr (string haystack, string needy)
strstr 関数 この関数は、大文字と小文字が区別されない点を除けば、strstr と似ています。PHP ソース コードの実装の主な違いは、すべての文字列を小文字に変換する操作が追加されていることです。プログラムの実装では、検索の前に次のコードが追加されます。
php_strtolower(s, s_len);php_strtolower(t, t_len);return php_memnstr(s, t, t_len, s + s_len);
以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
PHP ソース コード 1: 関数の爆発と内包に関する簡単な説明
以上がPHP ソース コード 3 についての簡単な説明: strrchr、strstr、stristr 関数についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。