4

如何从 PHP 中的字符串中删除所有俄语字母?
或者相反,我只想保留。
英文字母、空格、数字和所有符号,如 !@#$%^&*(){}":?><>~'"

我怎样才能做到这一点,谢谢。

我想通了,我用### 替换所有俄罗斯 cherecters,然后我从头到尾子串。

$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 回答