はじめに
実務にて、Web スクレイピングで取得した文字列から、特定の文字列より後ろの文字列を切り出してデータベースに保存してほしいという小仕事の依頼があり、それを解決した情報になります。ソースコードをコピペ(コピー&ペースト)するだけで簡単に流用ができます。
ソースコード
$str = 'シャア専用ザクⅡ 型式番号:MS-06S';
echo mb_substr($str, mb_strrpos($str, ':') + 1, mb_strlen($str)); // MS-06S
検証環境
解説
文字列から特定の文字列より後ろの文字列を切り出すには、mb_strrpos、mb_strlen、mb_substr を利用します。
位置の取得
mb_strrpos で文字列の中に指定した文字列が最後に現れる位置を取得します。これが、切り出しの開始位置になります。
$str = 'シャア専用ザクⅡ 型式番号:MS-06S';
echo mb_strrpos($str, ':'); // 13
mb_strlen で文字列の長さを取得します。これが、切り出しの終了位置になります。
$str = 'シャア専用ザクⅡ 型式番号:MS-06S';
echo mb_strrpos($str, ':'); // 13
echo mb_strlen($str); // 20
文字列の切り出し
mb_substr で文字列を切り出します。第 1 引数に取り出したい文字列、第 2 引数に切り出しの開始位置、第 3 引数に切り出しの終了位置を設定します。
必要であれば、第 4 引数に文字エンコーディングを指定できます。省略した場合は、内部文字エンコーディングを使用します。
また、今回は指定した文字列を含まない文字列を取得したいので、mb_strrpos の戻り値に 1 を加算して、指定した文字列分の位置を進めます。
$str = 'シャア専用ザクⅡ 型式番号:MS-06S';
echo mb_substr($str, mb_strrpos($str, ':') + 1, mb_strlen($str)); // MS-06S
以上です。
おわりに
preg_match で文字列を切り出す方法もあるのですが、正規表現が苦手な人もいるので今回はシンプルな方法で解決しました。