0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【情報整理④】PHPの頻出関数を整理して、画面遷移過多による眼病を予防 ~ 文字列・数値編 ~

Posted at
  • Netflixによって世界中から人気を博している「こんまり」さんに、多大な影響を受けて情報整理をしていく記事第四弾。
  • 本来の「世界的潮流に乗っかって、几帳面技術者を堂々宣伝する」という見掛け倒し目的のこの記事が、「角膜損傷を防ぐための健康活動」という老化防止目的の記事へと大幅転換を図る、二十代前半執筆者。
  • 忘却癖が只者ではない私は、「検索・記録・復習」をしても、見事に消滅する滑稽な頭脳のため、常に画面は自分と見事に比例した「不安定な落ち着きの無さ」を発揮。
  • 今回は、PHPの頻出関数の「文字列・数値」を整理していくことにしよう。

PHP頻出関数

文字列,数値

printf(), sprintf()

<?php
// printf(フォーマット文字列,値,値);

printf('今日は%d月%d日です。',date('m'),date('d'));

// 実行結果
// 今日は3月2日です。
<?php
// sprintf(フォーマット文字列,値,値);

$number = sprintf('%04d',30);
echo $number;

// 実行結果
// 0030

preg_match(),preg_match_all()

  • 正規表現による一致・検索。

  • パターンに一致すれば「1」、一致しなければ「2」を返す。

  • preg_match_all() は一致したすべての値を変数に格納。

  • 公式マニュアル

  • 公式マニュアル

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

  if (preg_match('/経済/', '世界経済情勢')) {
    echo 'ある';
  } else {
    echo 'ない';
  }

// 実行結果
// ある
<?php
// 「PREG_OFFSET_CAPTURE」を指定して、一致文字列の登場位置(オフセット)をバイト数で取得
// ※半角は1バイト、全角は2バイト

  if (preg_match('/経済/', '世界経済情勢',$data,PREG_OFFSET_CAPTURE)) {
    echo "ある\n";
  } else {
    echo "ない";
  }
  print_r($data)

// 実行結果

/*
ある
Array
(
    [0] => Array
        (
            [0] => 経済
            [1] => 6
        )

)
*/

<?php
// 「PREG_OFFSET_CAPTURE」を指定して、一致文字列の登場位置(オフセット)をバイト数で取得

  if (preg_match_all('/経済/', '世界経済情勢における、日本の経済状況を、日本経済大学教授の経済学者が解説。',$data,PREG_OFFSET_CAPTURE)) {
    echo 'ある';
  } else {
    echo 'ない';
  }
  print_r($data)

// 実行結果

/*
ある
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 経済
                    [1] => 6
                )

            [1] => Array
                (
                    [0] => 経済
                    [1] => 42
                )

            [2] => Array
                (
                    [0] => 経済
                    [1] => 66
                )

            [3] => Array
                (
                    [0] => 経済
                    [1] => 87
                )

        )

)
*/

preg_replace()

  • 正規表現によるパターンに一致した、検索または置換を行う。

  • 公式マニュアル

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

$names = '佐藤 田中 鈴木 佐藤';
$names_grep = preg_replace('/(佐藤)/', '上野', $names);
echo $names_grep;

// 実行結果

// 上野 田中 鈴木 上野

preg_quote()

  • 正規表現特殊文字の前にバックスラッシュをつけてエスケープする。

  • オプション区切り文字は省略可能。「/」が一般的に使用されている。

  • 公式マニュアル

// preg_quote(文字列,オプション区切り文字)

$keywords = '$URL : /で始まる。';
$keywords = preg_quote($keywords, '/');
echo $keywords;

// 実行結果

// \$URL \: \/で始まる。

str_replace(), strtr()

// str_replace(検索文字列 ,置換後文字列 ,検索対象文字列,置換した回数)

$names = ['佐藤', '高橋', '鈴木', '高橋', '中村'];
$replace = str_replace('高橋', '小松', $names, $count);
print_r($replace);
echo '置換した回数: '.$count;

// 実行結果

/*
Array
(
    [0] => 佐藤
    [1] => 小松
    [2] => 鈴木
    [3] => 小松
    [4] => 中村
)
置換回数: 2
*/
// strtr(置換対象文字列, 文字列(配列))

$array = array("佐藤"=>"鈴木","田中"=>"田丸","高橋"=>"高峰");
print strtr("佐藤 田中 大川 大橋 高橋", $array);

// 実行結果

// 鈴木 田丸 大川 大橋 高峰

substr(), mb_substr()

// substr (文字列, 開始位置 ) 

echo substr('America', 1);
echo mb_substr('あいうえおかきくけこ', 3);

// 実行結果

// merica
// かきくけこ

strtolower(), strtoupper()

// strtolower(対象文字列)

$name = "JOHN,Bob,michaEl";
$result = strtolower($name);
echo $result;

// 実行結果

// john,bob,michael
// strtoupper(対象文字列)

$name = "JOhN,Bob,michaEl";
$result = strtoupper($name);
echo $result;

// 実行結果

// JOHN,BOB,MICHAEL

strlen(), mb_strlen()

// strlen(対象文字列)

$name = 'Michael';
echo strlen($message);

// 実行結果

// 7
// mb_strlen(対象文字列)

$message = '私は男です';
echo mb_strlen($message);

// 実行結果

// 5

strpos(), mb_strpos()

// strpos(検索対象文字列,指定文字列)

$name = 'michael';
$findword   = 'a';
$result = strpos($name, $findword);

if ($result === false) {
    echo "'$findword' は、'$name' の中で見つかりませんでした";
} else {
    echo "'$findword' が、'$name' の中で見つかりました\n";
    echo "位置 : $result";
}

// 実行結果

/*
'a' が、'michael' の中で見つかりました
位置 : 4
*/

mb_convert_encoding()

// mb_convert_encoding(対象文字列,変換文字コード,対象文字コード)

/* 内部文字エンコーディングからSJISへの変換 */
$name = mb_convert_encoding($name, "SJIS");

/* SJISからUTF-8に変換 */
$name = mb_convert_encoding($name, "UTF-8", "SJIS");

/* "auto" 指定で、"ASCII,JIS,UTF-8,EUC-JP,SJIS" に展開 */
$name = mb_convert_encoding($name, "EUC-JP", "auto");

mb_convert_kana()

  • ひらがな・カタカナ、全角・半角を相互に変換する。

  • 下記、オプション。

オプション 意味
r 「全角」英字を「半角」に変換
R 「半角」英字を「全角」に変換
n 「全角」数字を「半角」に変換
N 「半角」数字を「全角」に変換
a 「全角」英数字を「半角」に変換
A 「半角」英数字を「全角」に変換
s 「全角」スペースを「半角」に変換
S 「半角」スペースを「全角」に変換
k 「全角カタカナ」を「半角カタカナ」に変換
K 「半角カタカナ」を「全角カタカナ」に変換
h 「全角ひらがな」を「半角カタカナ」に変換
H 「半角カタカナ」を「全角ひらがな」に変換
c 「全角カタカナ」を「全角ひらがな」に変換
C 「全角ひらがな」を「全角カタカナ」に変換
V 濁点付きの文字を一文字に変換
// mb_convert_kana(対象文字列,オプション)

/* 「半角カタカナ」を「全角カタカナ」に変換し、「全角」英数字を「半角」に変換。 */
$str = mb_convert_kana($str, "KVa");

trim(), ltrim(), rtrim()

// trim(対象文字列)
// rtrim(対象文字列)
// ltrim(対象文字列)

$name = ' satou ';
$job = ' engineer ';
$origin = ' japan ';

$new_name = trim($name);
$new_job = ltrim($job);
$new_origin = rtrim($origin);

var_dump($new_name);
var_dump($new_job);
var_dump($new_origin);

// 実行結果

/*
string(5) "satou"
string(9) "engineer "
string(6) " japan"
*/

mt_rand()

  • 指定された範囲でランダムな数値を返す。

  • rand()より高精度。

  • 公式マニュアル

// mt_rand(最小値,最大値)

// オプション指定なし。
echo mt_rand() . "\n";
// オプション指定あり。
echo mt_rand(10,20);

// 実行結果

/*
1458218741
13
*/

is_string()

// is_string(変数)

$name="佐藤";
if(is_string($name)){
    echo '文字列です。';
}else{
    echo '文字列ではありません。';
}

// 実行結果

// 文字列です。

is_int()

// is_int(対象変数)

$number=78.00;
if (is_int($number)) {
    echo '整数型です。';
}else {
    echo '整数型ではありません。';
}

// 実行結果

// 整数型ではありません。

is_float()

  • 与えられた値が float型(少数) であるかを返す。

  • is_double()も存在はするが、is_flostと同様。

  • 公式マニュアル

// is_float(対象変数)

$number=78.00;
if (is_float($number)) {
    echo '浮動小数型です。';
}else {
    echo '浮動小数型ではありません。';
}

// 実行結果

// 浮動小数型です。

is_numeric()

  • 与えられた値が数字として扱えるかを返す。文字列でも良い。

  • 公式マニュアル

// is_numeric(対象変数)

$str_number = '10';
$int_number = 10;

if(is_numeric($str_number)){
    echo 'これは数値として扱える。';
}else{
    echo '駄目です。';
}

// 実行結果

// これは数値として扱える。

round()

  • 小数部分を四捨五入して整形。

  • 桁数指定で、変更できる。

  • 第三引数での「オプションモード」を指定できる。

  • 下記、オプションモード

定数 意味
PHP_ROUND_HALF_UP 小数点を指定桁数に、0から離れる方向に整形
PHP_ROUND_HALF_DOWN 小数点を指定桁数に、0に近づく方向に整形
PHP_ROUND_HALF_EVEN 小数点を指定桁数に、次の偶数に整形
PHP_ROUND_HALF_ODD 小数点を指定桁数に、次の奇数に整形
// round(値,桁数,オプションモード)

// 通常指定
echo round(34.5) . "\n";
// 桁数指定
echo round(5.5555, 2) . "\n";
echo round(123456789, -3);
// モード指定
echo round(-1.55, 1, PHP_ROUND_HALF_UP) . "\n";
echo round(-1.55, 1, PHP_ROUND_HALF_DOWN) . "\n";
echo round(-1.55, 1, PHP_ROUND_HALF_EVEN) . "\n";
echo round(-1.55, 1, PHP_ROUND_HALF_ODD);

// 実行結果

/*
35
5.56
123457000
-1.6
-1.5
-1.6
-1.5
*/

floor()

  • 小数部分を、小数点以下切り捨てして整形。

  • ※値が小さい方へ小数点以下を切り捨てるため、マイナスの場合は注意

  • 公式マニュアル

// floor(値)

echo floor(3.14) . "\n";
echo floor(-3.14);

// 実行結果

/*
3
-4
*/

ceil()

// ceil(値)

echo ceil(3.14) . "\n";
echo ceil(-3.14);

// 実行結果

/*
4
-3
*/

まとめ

  • 今回は、PHP関数メモの第一回目ということで、眼病予防という崇高な目的で始まったはずが、おびただしい量による検索のため、自己傷害を加速させながら記事を書く。
  • 「この作業が完了したら、遷移激減を達成でき、やつれ目の卒業ができる」という考えを、同時に発生する整理のための検索によって、予防効果を帳消しにすることから逃避して、楽しい余生の妄想にはげむ。
  • 異常な長持ち性のため、今後も多くの情報を整理していくため、眼病予防は別の代替案を模索することにしよう。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?