ホームページ >バックエンド開発 >PHPチュートリアル >PHP文字列操作入門チュートリアル_PHPチュートリアル
言語に関係なく、文字列操作は重要な基礎であり、多くの場合単純かつ重要です。人間の音声と同じように、一般に形式 (グラフィカル インターフェイス) と言語 (印刷文字列?) があり、文字列でさらに多くのことを説明できます。 PHP には、強力で比較的簡単に使用できる文字列操作関数が多数用意されています。詳細については、http://cn2.php.net/manual/zh/ref.strings.php を参照してください。以下に簡単に説明します。その機能と特徴。
弱い型
PHP は弱い型指定の言語であるため、他の型のデータは通常、文字列操作関数に直接適用でき、処理のために次のような文字列型に自動的に変換されます。
echo substr("1234567" , 1 , 3);
と
echo substr(123456,1, 3);
は同じです
定義
は通常、文字列を識別するために二重引用符または一重引用符を使用します。たとえば、
$str = "i love u";
$str = 'i love u'
両者にはいくつかの違いがあります。後者はすべての一重引用符の内容を文字として扱いますが、前者は扱いません。たとえば、
$test = "iwind";
$str = "i love $test"; // i love $test を取得します。 ; // i love $test が得られます
次の 2 つの例の動作も異なります:
echo "i love test" // t はエスケープとして扱われます
; echo 'i love test'; // i love test が得られます
したがって、二重引用符で囲まれた内容は「説明済み」であり、一重引用符で囲まれた内容は「表示されている内容がそのままである」と単純に考えることができます。 get" (特に、'' は '' として認識されます)。明らかに、二重引用符の形式はより柔軟です。もちろん、ここでは説明しませんが、いくつかの特別な場合には一重引用符の方が適しています。
出力
PHP で最も一般的に使用される出力は echo と print です。どちらも実際の関数ではなく、言語構造であるため、呼び出し時に二重括弧を使用する必要はありません (
echo("test") など)。 ;print ("test")) 出力時に両方に値を割り当てることができます:
echo $str="test"; //一方では test が出力され、他方では "test" が割り当てられます。文字列変数 $str へ
print $ str="test";
名前の違いに加えて、この 2 つは他にも違いがあります。 print には戻り値があり、常に 1 が返されますが、echo には戻り値がありません。したがって、echo は print よりも高速です:
$return = print "test"; // 出力 1
このため、print は実行できます。複合ステートメントでは使用できますが、echo は使用できません:
isset($str) または print "str 変数が定義されていません" // 出力は "str 変数が定義されていません"
isset($str) または echo "str 変数は定義されていません" Definition ";// 分析エラーが表示されます
echo は一度に複数の文字列を出力できますが、print はできません:
echo "i ","love ","iwind"; // 出力は "i"; love iwind "
print "i ","love ","iwind"; // エラーが表示されます
echo、print は「ドキュメント構文」と呼ばれる文字列も出力できます、構文は次のとおりです:
echo << ;< ; タグ名
...
文字列内容
...
タグ名;
例:
echo 2 つのラベル名は同じであり、後者のラベル名の前には空白があってはなりません。 、正方形のフォーマットで書く必要があります。ドキュメント構文出力の内容は変数名と一般的な記号を識別します。これは二重引用符の機能とほぼ同じです。
echo と print の出力に加えて、PHP は printf、sprintf、vprintf、vsprintf などの文字列をフォーマットするための関数も提供しますが、ここでは詳しく説明しません。
接続
「.」演算子を使用して 2 つ以上の文字列を接続し、文字列の順序で新しい文字列を形成します。
$str = "i " . "iwind";
$str ここは "i love iwind" です。もちろん、.= 演算子も使用できます:
$str = ""; // 初期化
$str .= "i love iwind";
未定義の変数を使用するとエラーが発生するため、ここでは初期化が使用されます。 "" または null は単に空の文字列を表すことができます。
Length
PHP は文字列の長さを計算する strlen 関数を提供します:
$str = "test";
echo strlen($str) // strlen が 4 を出力するのは少し奇妙です。漢字と同等である必要があり、全角文字は 2 または 4 の長さとしてカウントされます。幸いなことに、次の 2 つの関数 mbstring または icon がこの問題の解決に役立ちます。
$len = iconv_strlen($str, "GBK"); : mbstring モジュールには、マルチバイト文字を含む文字列に対する処理関数が多数用意されています。この記事は文字列の入門に関するものであるため、詳細は説明しません。
分離と連結
PHP では、区切り文字に従って文字列を配列に分割したり、配列を文字列に結合したりすることができます。次の例を見てください:
$str = "i love iwind";
$array =explode(" ", $str);
上記のexplode関数は、$str文字列をスペース文字で区切ります。配列 $array:array("i", "love", "iwind")。explode 関数に似た関数には、preg_split()、spliti()、split() などの関数があります。
対照的に、implode と join は、配列を文字列に結合することができ、まったく同じ機能を持つ関数です。
$array = array("i", "love", "iwind");
$str = implode(" ", $array);
この例の implode 関数は、配列 $array の各要素を使用します。スペース文字を使用して接続し、文字列 $str: "i love iwind" を返します。
Crop
文字列の先頭と末尾は必要な部分ではない場合があるため、trim、rtrim、ltrim などの関数を使用できます。 、それぞれ、文字列の両端からスペース、文字列の末尾からスペース、文字列の先頭からスペースを削除します。
echorim(" i love iwind "); // "i love iwind" が得られます
echo rtrim(" i love iwind ") // あなたは "i love iwind" を取得します
echo ltrim(" i love iwind "); // "i love iwind " が得られます
実際、これら 3 つのパラメータは文字列の先頭と末尾のスペースを削除するだけでなく、2 番目のパラメータで指定された文字も削除できます。 as:
echo Trim(" ,1,2,3,4,", ","); // 両端の "," の数字が切り取られた 1,2,3,4 が得られます。
Chop 関数を使用している人を時々見かけますが、実際には、これは rtrim と同義の関数です。
大文字
英語の文字の場合、strtoupper と strto lower を使用して大文字または小文字に変換できます。
echo strtoupper("i love iwind"); // I LOVE IWIND を取得します
echo strto lower("I LOVE IWIND") // i love iwind を取得します
通常は != を使用できます。 = = 2 つのオブジェクトが等しいかどうかを比較します。これらが 2 つのオブジェクトである理由は、それらがすべて文字列である必要はなく、整数などの場合もあるためです。たとえば、
$a = "ジョー";
$b = "ジェリー";
if ($a != $b)
{
echo "等しくない"
}
else
{
echo "等しい"; ;
}
!==,=== (余分な等号が表示されます) を使用して比較する場合、true を返すには 2 つのオブジェクトの型が厳密に等しい必要があります。そうでない場合は、==,!=, を使用します。文字列は比較のために自動的に対応する型に変換されます
22 == "22"; // true を返します
22 === "22"; // このため、プログラムでは次のような問題が頻繁に起こります。予期せぬ "事故":
0 == "I love you"; // Return true
1 == "1 I love you" // Return true
PHP 関数には、このようなグループもあります。 、strcasecmp、strncasecmp()、strncmp()、前者が後者より大きい場合はすべて 0 より大きい整数を返し、前者が後者より小さい場合は 0 より小さい整数を返します。比較の原理は他の言語と同じです。
strcmp は、大文字と小文字を区別する (つまり、大文字と小文字を区別する) 文字列比較に使用されます。
echo strcmp("abcdd", "aBcde") // "b" と "B" を比較し、1 (>0) を返します。
strcasecmp は、大文字と小文字を区別しない文字列比較に使用されます:
echo strcasecmp("abcdd", "aBcde") // "d" と "e" を比較し、-1 (<0) を返します。文字列の先頭から開始して文字列の一部を比較するために使用されます。 3 番目のパラメータは比較する長さです。
echo strncmp("abcdd", "aBcde", 3) ; // 1 を返します。 0)、abc と aBc を比較します
strncasecmp は、大文字と小文字を区別せずに文字列の先頭から開始して文字列の一部を比較するために使用されます。3 番目のパラメータは比較する長さです :
echo strncasecmp("abcdd", "aBcde", 3); // abc と aBc を比較すると、大文字と小文字が区別されず同じであるため、0 を返します。
文字列のサイズを単純に比較するだけでは、あらかじめ決められた要件を満たせない場合もあります。たとえば、通常どおり、10.gif は 5.gif よりも大きくなりますが、上記の関数を適用すると -1 が返されます。この状況に対して、PHP は 2 つの対照的な関数 strnatcmp と strnatcasecmp を提供します。
echo strnatcmp("10.gif", "5.gif"); // Return 1 ( >) ;0)
echo strnatcasecmp("10.GIF", "5.gif"); // Return 1 (>0)
置換
置換の意味は、文字列の一部を変更して、新しい要件を満たす新しい文字列。 PHPでは通常、str_replace("置換する内容","元の内容を置換する文字列","元の文字列")を使って置換します。
echo str_replace("iwind", "kiki", "i love iwind, iwind saw"); // "i love kiki, kiki had been" を出力します
元の文字列内のすべての "iwind" を "kiki" に置き換えます
str_replace は大文字と小文字を区別するため、str_replace("IWIND", "kiki",...) を使用して元の文字列の "iwind" を置き換えることはできません。
str_replace も多対実装できます。 -1 つの多対多の置換ですが、1 対多の置換は実現できません:
echo str_replace(array("iwind", "kiki"), "people", "i love kiki, iwind thought" );
出力します
私は人が好きです、と言った
最初のパラメータのarray("iwind", "kiki") は "people" に置き換えられます
echo str_replace(array("iwind", "kiki" ), array (「優しい男性」、「女性」)、「私はキキが好きです、と言いました」)
出力 私は女性が大好きです、優しい男性は言いました。つまり、最初の配列の要素が 2 番目の配列の対応する要素で置き換えられ、一方の配列の要素が他方の配列よりも少ない場合、残りの要素は空として扱われます。
これに似ているのは strtr です。使用法についてはマニュアルを参照してください。
さらに、PHP では文字列の一部を置換する substr_replace も提供されています。構文は以下の通りです:
substr_replace (元の文字列, 置換される文字列, 置換開始位置[, 置換長])
このうち、置換開始位置は0から計算され、元の文字列の長さより小さくなければなりません。交換する長さはオプションです。
echo substr_replace("abcdefgh", "DEF", 3); // "abcDEF" を出力します
echo substr_replace("abcdefgh", "DEF", 3, 2) // "abcDEFfgh" を出力します
この例では、置換は 3 番目の位置 (つまり "d") から始まり、したがって "defgh" が "DEF" に置き換えられます
2 番目の例では、置換も 3 番目の位置 (つまり "d") から始まりますが、 2 つの長さ、つまり e のみを置き換えるので、「de」は「DEF」に置き換えられます。
PHP では、正規表現を適用して文字列を完全に置換するための preg_replace、preg_replace_callback、ereg_replace、eregi_replace などの関数も提供されています。使用方法の説明書。
検索と一致
PHP には検索、一致、または位置決めのための関数が多数あり、それらはすべて異なる意味を持っています。ここでは、一般的に使用される strstr と stristr のみについて説明します。後者と前者の関数と戻り値は同じですが、大文字と小文字は区別されません。
strstr("Mother string", "Substring") は、母文字列内で部分文字列が最初に出現する位置を検索するために使用され、母文字列内の部分文字列の先頭から母文字列の末尾までの回数を返します。文字列の部分。例:
echo strstr("abcdefg", "e"); //「efg」を出力します
部分文字列が見つからない場合は空を返します。
$needle = "iwind";
$str = "i love iwind";
if (strstr($str, $needle))
{
echo "There iwind inside はあります";
}
else
{
Echo "There is no iwind inside";
}
「iwind inside」と出力されます
HTML 関連
1,htmlspecialchars($string)
これがその内容です最も簡単な使用法は、文字列内のいくつかの特殊文字 (名前が示すように) &、'、"<,> を、対応する HTML エンティティ形式に変換することです:
$str = "i love kiki、iwind は言った。";
echo htmlspecialchars($str);
は
i love kiki、iwind が言った
はすべての文字を変換します。
3,html_entity_decode($string);
PHP4.3.0以降に追加された、htmlentities($string)
4,nl2br($string);
Convert文字列内のすべての改行文字は < br /> + 改行文字に変換されます。 例:
$str = "i love kiki,n iwind had."; と出力されます。 kiki、
iwind は言いました。
暗号化
最も一般的に使用される暗号化文字列は、文字列を 32 ビットの一意の文字列に変換します
echo md5 ("i love iwind"); "2df89f86e194e66dc54b30c7c464c21c"
PHP5 は、16 ビットの暗号化された文字列を出力できるように、md5 に 2 番目のパラメーターを追加します
ここで、この文字列 入門チュートリアルは終了しましたが、上記は氷山の一角にすぎません。 PHP5 には多くの新機能が追加されているため、使いこなすには引き続き学習する必要があります。
http://www.bkjia.com/PHPjc/317290.html
www.bkjia.com