文字列に関するビルトイン関数についてです。
strlen() 関数を使用することで文字列の文字数を得ることができます。
main.php
<?php
$input = ' hoge_hoge ';
echo strlen($input) . PHP_EOL;
ターミナル
~ $ php main.php
12
$input = ' hoge_hoge ';が空白含め12文字あることがわかります。
しかし、空白や改行を除去した文字数を得たい場合には trim() 関数を使えば、前後の空白や改行を除去することができます。
main.php
<?php
$input = ' hoge_hoge ';
$input = trim($input);
echo strlen($input) . PHP_EOL;
ターミナル
~ $ php main.php
9
次に文字列の検索を行います。
strpos() の関数を使用し、文字列の中に _ があるかどうか調べます。
main.php
<?php
$input = ' hoge_hoge ';
$input = trim($input);
echo strpos($input, '_') . PHP_EOL;
ターミナル
~ $ php main.php
4
最初に _ が見つかった位置を教えてくれますが、位置は0から始まりますので、出力は4文字目になります。
次に置換をしていきます。文字列の _ を - に置き換えます。
この時に使用するのが str_replace()を使用します。
str_replace('置換前', '置換後', どこの文字列か)という記述をします。
main.php
$input = ' hoge_hoge ';
$input = trim($input);
$input = str_replace('_', '-', $input);
echo $input . PHP_EOL;
ターミナル
~ $ php main.php
hoge-hoge
文字列が日本語の場合は注意が必要
main.php
<?php
$input = ' こんにちは ';
$input = trim($input);
echo mb_strlen($input) . PHP_EOL;
echo mb_strpos($input, 'に') . PHP_EOL;
$input = str_replace('にち', 'ばん', $input);
echo $input . PHP_EOL;
ターミナル
~ $ php main.php
5
2
こんばんは
strlen() や strpos() で日本語を扱うにはマルチバイトに対応した別の関数を使う必要があります。
mb_strlen(), mb_strpos() を使います。