質問: strpos($s, 'o') !== false; //oが含まれていたら switch ($s) { case $ano: echo str_replace('a', '',$s), "\n"; //aを削除 break; case $ino: echo str_replace('i', '',$s), "\n"; //iを削除 break; case $uno: echo str_replace('u', '',$s), "\n"; //uを削除 break; case $eno: echo str_replace('e', '',$s), "\n"; //eを削除 break; case $ono: echo str_replace('o', '',$s), "\n"; //oを削除 break; default: echo $s, "\n"; //当てはまらない場合はそのまま表示する break; } } echo aiueo('taruto')); ``` 本来なら、`'trt'`となって欲しいのですが、このコードだと`truto`となってしまいます。 ### 試したこと * switch内で削除する文字の順番の'a'と'o'を並べ替えたりしたのですが、予想通り`tarut`となってしまいます。 * switchをif文に変えて、同じようなことをやってみたのですが、結果は同じで、`truto`と表示されてしまいます。 以上です。 解る方がいらしたらご教示よろしくお願いします!
回答: > > 現在用意された文字列に特定の文字が含まれていたら、その文字を削除して略語を生成すると言うプログラムを作っています。 > > > 正規表現を使えば一発です。 ``` preg_replace('/[aiueo]/g', '', $s); ```