tech.chakapoko.com
Home / PHP / 文字列

[PHP]文字列を調べる

文字列の長さを調べる

文字列の長さを調べるには strlen 関数を使います。

<?php
echo strlen('Hello');     // => 5

strlen 関数は日本語などのマルチバイト文字列に対しては正しく動作しません。マルチバイト文字列に対しては代わりに mb_strlen を使ってください。

<?php
echo mb_strlen('こんにちは'); // => 5

文字列の中に指定した文字列が含まれるかを調べる

strposmb_strpos 関数

strpos 関数を使うと文字列内に指定した文字列が含まれるかを調べることができます。

文字列が含まれていれば、その文字列が含まれている位置を返します。

<?php
$s = 'Hello, World!';
echo strpos($s, 'H'); // => 0
echo strpos($s, 'llo'); // => 2

文字列が含まれていなければ FALSE を返します。

strpos 関数は日本語などのマルチバイト文字列に対しては正しく動作しません。マルチバイト文字列に対しては代わりに mb_strpos を使ってください。

<?php
$s = 'こんにちは、世界';
echo mb_strpos($s, 'こ'); // => 0
echo mb_strpos($s, 'ん'); // => 1

strrposmb_strrpos 関数

strpos 関数、 mb_strpos 関数は指定文字列が最初に見つかった位置を返しますが、strrpos 関数、 mb_strrpos 関数は最後に見つかった位置を返します。

<?php
$s = 'Hello, World!';
echo strpos($s, 'o'); // => 4
echo strrpos($s, 'o'); // => 8
echo mb_strrpos($s, 'o'); // => 8

文字列の先頭が指定した文字列かどうかを調べる

strpos 関数、または mb_strpos 関数を用いて文字列の先頭が指定した文字列かどうかを調べることができます。

<?php
function starts_with($haystack, $needle) {
    return mb_strpos($haystack, $needle) === 0;
}

if (starts_with('こんにちは、世界', 'こんにちは')) {
    // ...
}

文字列の末尾が指定した文字列かどうかを調べる

strrpos 関数、または mb_strrpos 関数を用いて文字列の末尾が指定した文字列かどうかを調べることができます。

<?php
function ends_with($haystack, $needle) {
    return mb_strpos($haystack, $needle) === mb_strlen($haystack) - mb_strlen($needle);
}

$haystack = 'こんにちは、世界';
$needle = '世界';
if (ends_with($haystack, $needle)) {
    // ...
}

正規表現にマッチするかを調べる

正規表現にマッチするかを調べるには preg_match 関数を使います。

第3引数を指定した場合、マッチした結果が代入されます。

<?php
if (preg_match('/^Hello, (.*)!$/', 'Hello, World!', $match) > 0) {
    echo $match[0]; // => Hello, World!
    echo $match[1]; // => World
}