- Netflixによって世界中から人気を博している「こんまり」さんに、多大な影響を受けて情報整理をしていく記事第四弾。
- 本来の「世界的潮流に乗っかって、几帳面技術者を堂々宣伝する」という見掛け倒し目的のこの記事が、「角膜損傷を防ぐための健康活動」という老化防止目的の記事へと大幅転換を図る、二十代前半執筆者。
- 忘却癖が只者ではない私は、「検索・記録・復習」をしても、見事に消滅する滑稽な頭脳のため、常に画面は自分と見事に比例した「不安定な落ち着きの無さ」を発揮。
- 今回は、PHPの頻出関数の「文字列・数値」を整理していくことにしよう。
PHP頻出関数
-
PHP頻出関数
-
文字列,数値
- printf(), sprintf()
- preg_match(),preg_match_all()
- preg_replace()
- preg_quote()
- str_replace(), strtr()
- substr(), mb_substr()
- strtolower(), strtoupper()
- strlen(), mb_strlen()
- strpos(), mb_strpos()
- mb_convert_encoding()
- mb_convert_kana()
- trim(), ltrim(), rtrim()
- mt_rand()
- is_string()
- is_int()
- is_float()
- is_numeric()
- round()
- floor()
- ceil()
-
文字列,数値
- まとめ
- 参考
文字列,数値
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()
<?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() は前後から取り除き、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() は小数点以下切り上げでして整形。
// ceil(値)
echo ceil(3.14) . "\n";
echo ceil(-3.14);
// 実行結果
/*
4
-3
*/
まとめ
- 今回は、PHP関数メモの第一回目ということで、眼病予防という崇高な目的で始まったはずが、おびただしい量による検索のため、自己傷害を加速させながら記事を書く。
- 「この作業が完了したら、遷移激減を達成でき、やつれ目の卒業ができる」という考えを、同時に発生する整理のための検索によって、予防効果を帳消しにすることから逃避して、楽しい余生の妄想にはげむ。
- 異常な長持ち性のため、今後も多くの情報を整理していくため、眼病予防は別の代替案を模索することにしよう。
参考
-
https://php-archive.net/php/essential-php-functions/
→今回もはこちらの記事を参考にしました。大変お世話になりました。