KHN-プログラミングブログ-

PHP 関数:文字操作

①printf()

引数1でフォーマットを作成し、引数2の値を入れ込む

printf ('%s %s %s<br/>', 'Hellow', 'World', '!!');

$test_1="晴れ";
$test_2="曇り";
$format='今日の天気は%s時々%sです';
printf($format,$test_1,$test_2);

printf('今日は %d年%d月%d日です。<br/>', date('Y'),date('m'),date('d'));

結果

今日の天気は晴れ時々曇りです
今日は 2021年8月17日です。

*注意点

 数値は%d
 文字列は$sで取得
 自動的に値が出力される。
 5を0埋めの03dの場合
 005になる

②sprintf();

引数1でフォーマットを作成し、引数2の値を入れ込むが値はecho等で出力が必要

sprintf(文字列のフォーマット, 入力したい文字1, 入力したい文字2, ・・・)

$format = "%s 君は %s を %d 個食べました。<br/>";
echo sprintf($format, "太郎", "りんご", 7);
echo sprintf($format, "ジョン", "ドーナツ", 100);

使用例

sprintf(
             "INSERT INTO send_tb VALUES(%s,'%s','%s','%s','%s','%s','%s','%s','%s')",
             "null",
             $name,$gender,$email,$tel,$birth,$riyu,$password,$blood
           )

DLETE

sprintf(" 
      DELETE FROM `send_tb`
      WHERE id= %s",
      $id
      )

③preg_match()

返り値 = preg_match(/正規表現パターン/,検索対象の文字列,[配列],[動作フラグ],[検索開始位置])

 if (preg_match("/PHP/", "今PHPを勉強しています。")) {
    echo "マッチしました。";
  } else {
    echo "マッチしませんでした。";
  }

preg_matchは第一引数の正規表現に第二引数のテキストが一致していたら、trueを返してくれる。

そのほか

echo preg_match("/c[aeiou]t/", "I love my cat");
echo preg_match("/c[aeiou]t/", "I love my dog");

1文字目がcであり
2文字目がaeiouのどれかであり
3文字目がtであるもの

正規表現*電話番号ハイフンあり

$test="09042290028";

function pre($test_1){
  if( preg_match( '/^0[0-9]{1,4}-[0-9]{1,4}-[0-9]{3,4}\z/', $test_1)) {
    echo("正しい入力値");
  }else{
    echo("誤まりがある");}
}
pre($test);

ハイフンなし

if( preg_match( '/^0[0-9]{9,10}\z/', '文字列' ) ) {
    // 文字列が電話番号(ハイフンなし)である場合
}else{
    // 文字列が電話番号(ハイフンなし)でない場合
}

メールアドレスかどうか

preg_match関数は、第一引数に正規表現を取り、第二引数に検証する文字列を取ります。

$a="khn.kazmasa@gmail.com";

$reg_str = "/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/";
if (preg_match($reg_str, $a)) {
 echo "正しいメールアドレスです"."n/";
} else {
 echo "正しくないメールアドレスです"."n/";
}

④preg_match_all()

引数1で指定したものが引数2で何件あるか確認する。

$str = '好きなプログラミング言語はPHPです。今日もPHPを勉強しました。';

echo preg_match_all('/PHP/', $str);

実行結果

⑤preg_replace() 正規表現で使われることが多い

検索しヒットしたものを置き換える

例1
preg_replace($正規表現パターン, $置換後の文字列, $置換対象)

$subject = '私はリンゴが好きです';
$search = '/リンゴ/';
$replace = 'バナナ';
$subject = preg_replace($search, $replace, $subject);
echo $subject;

例2


$str = '<h1>Google.com</h1>へのリンクです';
$pattern = '/<h1>(.*)<\/h1>/u';
$replace = '<a href="http://$1">$1</a>';

$content = preg_replace($pattern, $replace, $str);

echo $content;

h1があったらそれをrepraceに変換する

⑥str_replace() 文字列置換

$before = "犬 猫 サル";
$after = str_replace("サル", "キジ", $before);
echo($after); 

実行結果
犬 猫 キジ

配列の中も変更できるし変更した回数も取得できる。

$fruits = ['apple', 'orange', 'melon', 'apple', 'pineapple'];

$replace = str_replace('apple', 'melon', $fruits, $count);

foreach($replace as $value => $key){
  echo $value.":";
  echo $key."<br>";
};

echo '置換した回数: '.$count;

⑦ substr() 文字列の何文字目から何文字取り出すかを指定して文字列の一部分を返す

$rest = substr("abcdef", -1);    
echo $rest."<br>";
$rest = substr("abcdef", -2);
echo $rest."<br>";
$rest = substr("abcdef", 1, 5);
echo $rest."<br>";

結果
f
ef
bcdef

⑧mb_substr マルチバイト文字(全角文字)

$text = 'あいうえおかき1234567';

$test=mb_substr($text,5,9);

echo $test;

結果
かき1234567

⑧ strtolower() 大文字を

$str = "Mary Had A Little Lamb and She LOVED It So";
$str = strtolower($str);
echo $str; 

結果
mary had a little lamb and she loved it so

⑨ strtoupper() 小文字を大文字に変換 

$str = "Mary Had A Little Lamb and She LOVED It So";
$str = strtoupper($str);
echo $str;

結果
MARY HAD A LITTLE LAMB AND SHE LOVED IT SO

⑩ strlen() 文字列のバイト数を返す。

$test = strlen('abcあいう');

echo $test;

結果
12

注意点
小文字1バイト
大文字2バイト