PHP String

String の基礎です。
C言語ように変数に int, float, string, char の区別はありません。
PHP は String(文字列)関係の処理が特に強化されています。
その一部を紹介します。

プログラムの作成-1

String1.php のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
$str = "phpAbaBabc";
print $str . "  length=" . strlen($str) . "\r\n";

$pos = stripos($str, 'AB');
if ($pos === false)  print("'AB' not found" . "\r\n");
else  print("AB:" . $pos . "\r\n");

$pos = strripos($str, 'AB');
if ($pos === false)  print("'AB' not found" . "\r\n");
else  print("AB:" . $pos . "\r\n");

$pos = strpos($str, 'AB');
if ($pos === false)  print("'AB' not found" . "\r\n");
else  print("AB:" . $pos . "\r\n");
?>

【実行画面】
コマンドプロンプトを起動して String1.php をコンパイルします。
コマンドのタイプは大文字でも小文字でも構いません。
String1.php の実効結果です。
C:\Windows\System32>cd \data\php
C:\DATA\PHP>php String1.php
phpAbaBabc  length=10
AB:3
AB:7
'AB' not found

C:\DATA\PHP>

プログラムの説明

  1. $str に String(文字列)を格納します。
    $str と文字列の長さを印字します。
    print 文の ( ) はあっても無くても構いません。
    「.」は文字列の連結演算子です。
    「" "」で囲われた文字列の中では PHP の変数や \r\n が使えます。
    それに対し「' '」で囲われた文字列は、変換されずにそのままです。
    $str = "phpAbaBabc";
    print $str . "  length=" . strlen($str) . "\r\n";
    
  2. $str に格納されている 'AB' を検索して、その位置を $pos に取得します。
    stripos() は大文字と小文字を区別しないで検索します。(str と pos の間に i が付く)
    $pos には "Ab" の位置(3)が格納されます。
    ($pos === false) は見つからなかったときの判定です。
    false の値は 0 と等しいので == とすると先頭(ゼロ番目)で見つけたとき真になります。
    $pos = stripos($str, 'AB');
    if ($pos === false)  print("'AB' not found" . "\r\n");
    else  print("AB:" . $pos . "\r\n");
    
  3. $str を検索して最後に見つけた 'AB' の位置を $pos に取得します。
    strripos() は大文字と小文字を区別しないで最後に見つけた位置を取得します。(str と pos の間に ri が付く)
    $pos には "ab" の位置(7)が格納されます。
    $pos = strripos($str, 'AB');
    if ($pos === false)  print("'AB' not found" . "\r\n");
    else  print("AB:" . $pos . "\r\n");
    
  4. $str を検索して 'AB' の位置を $pos に取得します。
    strpos() は大文字の 'AB' を最初に見つけた位置を取得します。(r も i も付かない)
    'Ab' や 'ab' は見つかりますが、'AB' は見つかりません。
    $pos には見つからなかったときの(0)が格納されます。
    $pos = strpos($str, 'AB');
    if ($pos === false)  print("'AB' not found" . "\r\n");
    else  print("AB:" . $pos . "\r\n");
    
  5. 関数名の r や i の規則は、今回説明した関数以外にも当てはまります。
    各自で試してみて下さい。

プログラムの作成-2

String2.php のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
$str = "phpAbaBabc";
$word = str_replace("ab", "XYZ", $str);
print($word . "\r\n");

$word = str_ireplace("ab", "XYZ", $str);
print($word . "\r\n");
?>

【実行画面】
コマンドプロンプトを起動して String2.php をコンパイルします。
String2.php の実効結果です。
C:\DATA\PHP>php String2.php
phpAbaBXYZc
phpXYZXYZXYZc

プログラムの説明

  1. $str の "ab" を "XYZ" に置換します。
    "ab" は一個しかみつかりません。
    $str = "phpAbaBabc";
    $word = str_replace("ab", "XYZ", $str);
    print($word . "\r\n");
    
  2. 大文字小文字を区別しないで "ab" を "XYZ" に置換します。
    三か所が置き換わっています。
    $word = str_ireplace("ab", "XYZ", $str);
    print($word . "\r\n");
    
  3. この関数の名前にも i の規則(大文字と小文字を区別しない)が当てはまります。

プログラムの作成-3

String3.php のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
$str = "PHP Hello!";
$pos = strpos($str, ' ');
if ($pos === false)  print($str . "\r\n");
else
{   print(substr($str, 0 , $pos) . "\r\n");
    print(substr($str, $pos+1) . "\r\n");
}
?>

【実行画面】
コマンドプロンプトを起動して String3.php をコンパイルします。
String3.php の実効結果です。
C:\DATA\PHP>php string3.php
PHP
Hello!

プログラムの説明

  1. $str の " " を検索します。
    見つからなかったときは $str をそのまま印字します。
    見つかったときは " " の位置で切り分けて印字します。
    substr($str, 0 , $pos) は $str の 0 番目から長さ $pos の文字列です。
    print(substr($str, $pos+1) は $str の $pos+1 番目から後の文字列です。
    if ($pos === false)  print($str . "\r\n");
    else
    {   print(substr($str, 0 , $pos) . "\r\n");
        print(substr($str, $pos+1) . "\r\n");
    }
    

プログラムの作成-4

String4.php のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
$str = "phpAbaBabc";
printf("%s\r\nstr(%d,%d):%s\r\n", $str,3,4,substr($str,3,4));

$first = $str{0};
$last = $str{strlen($str)-1};
print("first:". $first. "  :last:". $last. '  \r\n'. "\r\n");
print("first:$first  :last:$last\r\n");

$w = sprintf("%s length:%d\r\n", $str,strlen($str));
print $w;
?>

【実行画面】
コマンドプロンプトを起動して String4.php をコンパイルします。
String4.php の実効結果です。
C:\DATA\PHP>php string4.php
phpAbaBabc
str(3,4):AbaB
first:p  :last:c  \r\n
first:p  :last:c
phpAbaBabc length:10
C:\DATA\PHP>

プログラムの説明

  1. C言語と同じように printf() も使えます。
    %s と %d を使って編集して印字してみました。
    $str = "phpAbaBabc";
    printf("%s\r\nstr(%d,%d):%s\r\n", $str,3,4,substr($str,3,4));
    
  2. インデックスを使って、先頭の文字と最後尾の文字を取得します。
    "\r\n" は復帰・改行コードに変換されますが、' \r\n' は変換されません。
    $first = $str{0};
    $last = $str{strlen($str)-1};
    print("first:". $first. "  :last:". $last. '  \r\n'. "\r\n");
    
  3. "文字列" の中で PHP の変数を使うことも出来ます。
    '文字列' の場合は変換されません。
    print("first:$first  :last:$last\r\n");
    
  4. sprintf() も使えるようですがC言語とは書き方が異なります。
    編集した文字列を $w に格納して print で印字してみました。
    print の () は無くても構いません。
    $w = sprintf("%s length:%d\r\n", $str,strlen($str));
    print $w;
    
  5. PHP は String(文字列)関係が特に強化されていて、また折に触れて紹介します。

前田稔の超初心者のプログラム入門
PHP Program