4

PHP の文字列からすべてのロシア文字を削除するにはどうすればよいですか?
またはその反対、私だけを保持したいです。
英字、空白、数字、および !@#$%^&*(){}":?><>~'" などのすべての記号

どうすればそれを達成できますか、ありがとう。

私はそれを理解して、私はすべてのロシア語チェレクターを ### に置き換えてから、最初から最後までサブストリングを付けます。

$desc = preg_replace('/[а-я]+/iu','###', $desc);

$start = strpos ($desc,'###');
$end =strrpos ($desc,"###");

if($start!==false)
{
    $descStart = substr($desc,0,$start);
    $descEnd = substr($desc,$end+3);
    $desc = $descStart.$descEnd;
}
4

3 に答える 3

3
$string = 'тест тест Тест Обязателльно Stackoverflow >!<';
var_dump(preg_replace('/[\x{0410}-\x{042F}]+.*[\x{0410}-\x{042F}]+/iu', '', $string));

入力文字列は Unicode である必要があり、出力も Unicode である必要があります

于 2012-08-19T12:30:23.497 に答える
2

次の正規表現は、キリル文字の文字と一致します: http://regex101.com/r/sO0uB7 (Andrey Vorobyev のテキストに基づく例)

これがあなたが求めているものだと思います。

i修飾子が必要かどうかはわかりません。

于 2012-08-19T12:43:59.033 に答える
0

私のアプローチでは、最初に文字列を ASCII に音訳し (できるだけ多くの情報を保持するため)、次に許可されていない文字を削除します。

$url = iconv("utf-8", "us-ascii//TRANSLIT", $url);
$url = strtolower($url);
$url = preg_replace('~[^-a-z0-9_]+~', '', $url);

必要なものに一致するように、最後に正規表現を拡張する必要があります。

于 2012-08-19T12:13:20.650 に答える