0

重複の可能性:
特殊文字を PHP に基づいたものに置き換える方法は?

次のような文字列があります。

ABCÇĆDEFGHÎIïJ123450086

PHPでは、次のように表示するにはどうすればよいですか:

ABCDEFGHIJ123450086

不要な各文字を手動で置き換える必要はありません。これに何らかの正規表現を使用できますか? どのように?

A ~ Z と 0 ~ 9 だけが必要で、他の外国の文字は必要ありません (たとえば、それらを削除します)。

4

5 に答える 5

4

文字クラスを使用する:

$string = preg_replace('/[^\w\d]/', '', $string);

[^]( ) 英字 ( \w) でも数字 ( ) でもないすべての文字を\d空の文字列に置き換えます。

于 2013-01-10T20:50:31.533 に答える
1

素敵な機能:

/**
 * Strip accents
 *
 * @param string $str string to clean
 * @param string $encoding encoding type (example : utf-8, ISO-8859-1 ...)
 */
function strip_accents($str, $encoding='utf-8') {
    // transforme accents chars in entities
    $str = htmlentities($str, ENT_NOQUOTES, $encoding);

    // replace entities to have the first nice char
    // Example : "&ecute;" => "e", "&Ecute;" => "E", "Ã " => "a" ...
    $str = preg_replace('#&([A-za-z])(?:acute|grave|cedil|circ|orn|ring|slash|th|tilde|uml);#', '\1', $str);

    // Replace ligatures like : Œ, Æ ...
    // Example "Å“" => "oe"
    $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
    // Delete else
    $str = preg_replace('#&[^;]+;#', '', $str);

    return $str;
}

// Example
$texte = 'Ça va mon cœur adoré?';
echo suppr_accents($texte);
// Output : "Ca va mon coeur adore?"

ソース: http://www.infowebmaster.fr/tutoriel/php-enlever-accents

于 2013-01-10T20:57:15.470 に答える
0

それらを削除したいと仮定すると、preg_replace を使用して、az、AZ、および 0-9 の範囲にないすべての文字を '' に置き換えることができます。

それ以外の場合は、他のスレッドで提供されている翻訳手法を使用してください。

于 2013-01-10T20:50:22.817 に答える
0

いつでも正規表現を使用できます。

preg_replace('/^[A-Za-z0-9]/', '', $some_str)

于 2013-01-10T20:50:41.990 に答える
0

ホワイトリストを使用します。

$input = 'ABCÇĆDEFGHÎIïJ123450086';
$filtered = preg_replace("~[^a-zA-Z0-9]+~","", $input);
于 2013-01-10T20:51:00.003 に答える