PHP学習ノート——文字列操作

6028 ワード

PHPは使いやすいスクリプト言語として、文字列の処理能力も際立っています.今日はPHPで主に文字列に対する操作を見てみましょう.
文字列の書式設定
文字列の両側にある特殊文字を削除
  • trim:文字列の先頭と末尾の特殊文字を除去する
  • ltrim:文字列の先頭にある特殊文字を除去する
  • rtrim:文字列の末尾にある特殊文字を除去する
  • ここでの特殊文字のデフォルトは、改行記号()、戻り記号(r)、水平タブ(t)、垂直タブ(x 0 B)、文字列終端記号(0)、スペース文字です.これらのデフォルト文字以外の文字を除去する場合は、これらの関数の2番目のパラメータで除去する文字のリストを指定できます.
    折り返し改行をHTMLタグに置換
  • nl 2 br:文字列中のリターンワード()、改行(r)、リターン改行(r)、改行リターンワード(r)を
    または
  • に置き換える.
    出力文字列のフォーマット
  • echo:標準出力に1つ以上の文字列
  • を出力する.
  • print:標準出力に文字列
  • を出力する
  • printf:標準出力に1つの文字列
  • をフォーマット出力する.
  • sprintf:文字列をフォーマットし、
  • を返します.
    C言語を使用すると、C言語に対応するフォーマット文字列関数と基本的に同じ意味と使用方法で使用されるため、これらの関数の使い方が容易に理解できます.
    文字列の大文字と小文字を変更
  • strtoupper:文字列の文字をすべて大文字
  • に変換
  • strtolower:文字列の文字をすべて小文字に変換する
  • ucfirst:文字列の最初の文字を大文字
  • に変換する
  • ucwords:文字列の各単語の最初の文字を大文字
  • に変換する
    格納文字列に関連するフォーマット関数
    文字列内で有効な文字もありますが、データベースに格納すると、単一引用符(')、二重引用符(")、反スラッシュ()、NULL文字(NUL)などの問題が発生します.データベースシステムはこれらの文字の特殊な制御文字を解析するので、データベースシステムがこれらの文字を通常の文字として解析しないようにするメカニズムを提供する必要があります.方法は、これらの文字の前に反スラッシュ(\)を追加することです.' => \' " => \" \ => \\ NUL => \NUL
    PHPはこの状況を処理するために2つの対応するフォーマット関数を提供した.
  • addslashes:文字列内の特殊な制御文字にスラッシュ
  • を追加する
  • stripslashes:文字列内の特殊制御文字の前の反スラッシュ
  • を除去する
    これは手動で、PHPはm agic_quotes_gpcオプションを構成することによって自動フォーマットモードをオンにすることができ、このオプションがオンになると、GETPOSTCOOKIEの3つのソースからコミットされた変数文字列が文字列の特殊な制御文字に自動的に反斜棒を追加します.PHPは自動モードがオンになっているかどうかを判断する関数を提供しています:get_magic_quotes_gpc()、このように私たちはプログラムの中でこの判断に基づいてどのように処理するかを決定することができます.
    次に例を示します.
    
    

    文字列の組み立てと分解
  • explode:文字列を特定の区切り記号で分割し、分割された要素を配列に格納して返します.さらに、追加のパラメータlimitを使用して、分割要素の数を制限することもできる.

  • この関数のプロトタイプは次のとおりです:array explode(string separator, string input [, int limit]);一例を見てみましょう.この例はemailアドレスのドメイン名部分を分離し、ドメイン名に基づいてフィードバックメールをどこに送るかを決定します.
    $email_array = explode(‘@’, $email);
    if (strtolower($email_array[1]) == “bigcustomer.com”) { 
        $toaddress = “[email protected]”;
    } else {
        $toaddress = “[email protected]”;
    }
    
  • implode:この関数が達成した効果はexplodeとは逆に、配列要素を特定の区切り記号でつなぎ合わせます.

  • この関数のプロトタイプは、string implode ( string $glue , array $pieces ) string implode ( array $pieces )です.
    パラメータ$glueは、スペル時の区切り記号を指定するために使用され、指定されていない場合はデフォルトでスペースになります.
  • join:implode関数の別名です.
  • strtok:この関数も文字列を分割するために使用され、explode関数とは異なる場合、この関数は呼び出すたびに1つの要素だけを分割するので、1つの文字列を分割するには複数回のループ呼び出しが必要です.

  • 原型は以下の通り:string strtok ( string $str , string $token ) string strtok ( string $token )1回目の呼び出しでは、分割する文字列$strが入力され、$tokenによって分割された要素が返され、その後の呼び出しは元の文字列に入力する必要はなく、2つ目のプロトタイプ方式で呼び出すだけで、後続の分割要素が順次取得される.新しい文字列分割を開始する場合は、最初のプロトタイプ方式を再呼び出して新しい文字列を入力すればよい.
    次に使用例を示します.
    string";
    $tok = strtok($string, " 
    \t"); while ($tok !== false) { echo "$tok
    "; $tok = strtok("
    \t"); } ??>
  • substr:この関数は、1つの文字列からサブ文字列を正確に分離するために使用されます.

  • 原型は以下の通り:string substr ( string $string , int $start [, int $length ] )比較文字列
  • strcmp:辞書順に2つの文字列を比較し、大文字と小文字が敏感な
  • strcasecmp:2つの文字列を辞書順に比較し、大文字と小文字が敏感ではない
  • strnatcmp:2つの文字列を自然な順序で比較し、大文字と小文字が敏感な
  • strnatcasecmp:2つの文字列を自然な順序で比較し、大文字と小文字が敏感ではない
  • これらの文字列比較関数は、通常、複数の文字列のソート操作に使用されます.それらの原型は次のように似ています:int strcmp(string str1,string str2)返される比較結果ルールは次のとおりです.
    str 1がstr 2に等しい場合は0を返します.str 1がstr 2より大きい場合は1を返します.str 1がstr 2より小さい場合は-1を返します.
    辞書順とは,バイトのASCII値に従って2文字列の先頭バイトから比較し,等しい場合は次のバイトの比較に進み,比較が終了するまでである.自然な順序とは、人々の日常生活の思考習慣に従って並べ替えられ、文字列の中の数字の部分を数字の大きさで比較することである.例えば、「4」は「33」の最初の文字より大きく、自然ソート法則「33」は「4」より大きいため、バイトで比較すると「4」より大きくなる.
  • strlen:返される文字列の長さ
  • 一致文字列の検索
  • strstrstr:1つの文字列でサブ文字列または文字を検索します.PHPではstrchrstrstrが同等であることはC言語とは少し違いますので注意しましょう.

  • 関数のプロトタイプは次のとおりです:string strstr(string haystack, string needle);
  • strrchr:strchrと同様に、文字列の末尾から一致して検索されるパターン列とは異なります.
  • stristr:strstrに似ていますが、大文字と小文字が敏感ではありません.
  • strpos:strstrと同様に、strstrがルックアップモードを返すサブ文字列とは異なり、strposがルックアップモードの位置を返す.
  • strrpos:strposに似ていますが、これは文字列の末尾から検索されます.

  • PHPでは、strposの代わりにstrstrを使用して、strposの効率がより高いため、文字列内のサブ文字列を検索することを推奨します.strposシリーズ関数を使用する場合、検索されたサブ文字列が存在しない場合はFALSEが返されますが、弱い言語のPHPではFALSEの値は0と等しいがタイプが異なるため、===ではなく==が返されると判断します.
    $test = "Tommoy";
    $result = strpos($test, “H”); 
    if ($result === false) {
        echo “Not found”; 
    } else {
        echo “Found at position ".$result; 
    }
    

    置換文字列
  • str_replace:文字列内の特定のサブ文字列を検索で置き換えます.最後のパラメータ$countは、置換の最大回数を指定するためにオプションである.

  • 原型は以下の通り:mixed str_replace(mixed needle, mixed new_needle, mixed haystack[, int &count]));
  • substr_replace:文字列の位置を正確に指定することで、サブ文字列を置き換えます.最後のパラメータ$lengthはオプションであり、指定しない場合は末尾まで置換される.

  • 原型は以下の通り:string substr_replace(string string, string replacement, int start, int [length] );