$string='A;B;C;1;2-;D'
上記の文字列からすべての文字を削除し、文字と「;」を保持するにはどうすればよいですか
次の単純な正規表現を試してください。
preg_replace('/[^A-Z;]+/', '', $string);
また
preg_replace('/[^A-Z;]+/i', '', $string);
大文字と小文字を区別しない必要がある場合。
以下を使用できます。
$repl = preg_replace('/[^a-z;]+/i', '', $str);
^a-z;
角括弧内 (文字クラス) は、英字a-z
(範囲) またはセミコロン以外に一致することを意味します;
/i
大文字/小文字の英字の一致を避けるために、大文字と小文字を区別しないためのものです。
これを試して
preg_match('/[^a-z;]/i', $string);