構文:
string substr(string $string ,int $start [, int $length ])、長い string 内で一致する文字列または文字を見つけるために使用できます。$string は、文字列が$start は選択される開始位置、$length は選択される長さです。
$length が正のデータの場合、文字は左から右に読み込まれます。文字は右から左に読み取られます。
string は必須です。文字列の一部を返すことを指定します。
start は必須です。文字列の開始位置を指定します。
charlist はオプションです。返される文字列、デフォルトは文字列 End までです。
正の数値 - 文字列の指定された位置から始まります
負の数値 - 文字列の末尾から指定された位置で始まります
0 - 文字列の指定された位置から始まります文字列の最初の文字
PHPサンプルコードfunctionはテキストを分割できますが、分割されるテキストに中国語の文字が含まれている場合、この場合に問題が発生することがよくあります。 mb_substr()/mb_strcut 関数を使用できます。mb_substr()/mb_strcut の使用法は substr() と同様ですが、設定するには mb_substr()/mb_strcut の最後にもう 1 つのパラメータを追加する必要があります。ただし、ほとんどのサーバーは php_mbstring.dll を開きません。php.ini で php_mbstring.dll を開く必要があります。 <?php
echo mb_substr('我们都是好孩子hehe',0,9);
?>
出力: 私たちはみんなです
次に、
文字セットutf-8を追加します<?php
echo mb_substr('我们都是好孩子hehe',0,9,'utf-8');
?>
出力: 私たちはみんな良い子です
最初のものは、1つの中国語として3バイトを使用することです、これはutf- 8エンコーディングの特徴と、以下のutf-8文字セットの説明を加えて、単語単位でインターセプトします
以下は、UTF-8エンコーディングで文字列をインターセプトするecshopの関数です
function sub_str($str, $length = 0, $append = true) { $str = trim($str); $strlength = strlen($str); if ($length == 0 || $length >= $strlength) { return $str; //截取长度等于0或大于等于本字符串的长度,返回字符串本身 } elseif ($length < 0) //如果截取长度为负数 { $length = $strlength + $length;//那么截取长度就等于字符串长度减去截取长度 if ($length < 0) { $length = $strlength;//如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度 } } if (function_exists('mb_substr')) { $newstr = mb_substr($str, 0, $length, EC_CHARSET); } elseif (function_exists('iconv_substr')) { $newstr = iconv_substr($str, 0, $length, EC_CHARSET); } else { //$newstr = trim_right(substr($str, 0, $length)); $newstr = substr($str, 0, $length); } if ($append && $str != $newstr) { $newstr .= '...'; } return $newstr; }
以上がPHPのsubstr()関数の詳しい説明と使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。