PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPで文字列から英数字以外の文字を削除する方法(preg_replaceの使い方)

PHPでは、正規表現を活用することで、文字列から英数字(アルファベットと数字)以外の不要な記号や特殊文字を簡単に取り除くことができます。ここでは、「preg_replace」関数を使った具体的な方法を2つのサンプルコードで解説します。

例1:文字クラスを使った正規表現で削除する

<?php
$my_str="Thisis!@sample*on&ly)#$";
$my_str = preg_replace( '/[^a-z0-9]/i', '', $my_str);
echo "The non-alphanumeric characters removed gives the string as ";
echo($my_str);
?>

出力結果

The non-alphanumeric characters removed gives the string as Thisissampleonly

このコードでは、「preg_replace」関数を使用して、文字列から英数字以外の文字をすべて削除しています。正規表現「/[^a-z0-9]/i」は、英数字以外の文字にマッチするパターンです。先頭の「^」は否定を意味し、「a-z0-9」以外の文字を対象とします。末尾の「i」は大文字・小文字を区別しないオプションです。

処理の流れとしては、まず削除対象の文字列を変数として定義し、その文字列に対して「preg_replace」関数を呼び出します。マッチした文字は空文字列に置き換えられるため、結果として英数字だけが残り、整形された文字列が画面に出力されます。

例2:「\W」を使った別の記述方法

<?php
$my_str="This!#is^&*a)(sample*+_only";
$my_str = preg_replace( '/[\W]/', '', $my_str);
echo "The non-alphanumeric characters removed gives the string as ";
echo($my_str);
?>

出力結果

The non-alphanumeric characters removed gives the string as Thisisasample_only

この例との唯一の違いは、使用している正規表現が異なる点です。「\W」は「単語構成文字以外」を表す特殊な文字クラスで、意味としては前述の正規表現とほぼ同じですが、記述方法が異なります。

なお、出力結果に注目すると、アンダースコア(_)だけが残っていることがわかります。これは「\W」が英数字とアンダースコアを「単語構成文字」として扱うためです。アンダースコアも削除したい場合は、例1のように「/[^a-z0-9]/i」を使用するか、「/[\W_]/」のようにパターンにアンダースコアを追加してください。

  1. Pythonで文字列から数字以外の文字を削除する方法を解説

    Pythonでは、文字列から数字以外の文字(アルファベットや記号など)を取り除く方法がいくつかあります。ここでは、代表的な3つの手法を具体的なコード例とともに紹介します。 1. 内包表記とisdigit()メソッドを使う方法 最もシンプルでPythonらしい書き方は、for ... ifによる内包表記を使って数字以外の文字を除外する方法です。isdigit()メソッドは、文字が数字かどうかを判定してくれます。 >>> s = H3ll0 P30P13 >>> .join(i for i in s if i.isdigit()) 303013 このコードでは

  2. Pythonで文字列から特定の文字を削除する方法【replace・正規表現・translate】

    replace()メソッドで文字を削除する基本の方法Pythonの文字列(str型)には、部分文字列を別の文字列へ置き換えるためのreplace()メソッドが用意されています。削除したい文字を空文字列()に置き換えることで、その文字を取り除くことができます。>>> Hello people.replace(e, ) Hllo popl正規表現(re.sub)で複数の文字を一度に削除する1行のコードで複数種類の文字をまとめて削除したい場合は、正規表現モジュール re を使うのがおすすめです。削除したい文字を「|」(OR条件)で区切って指定し、re.sub(置換対象パターン, 置