如何从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;
}
答案 0 :(得分:3)
$string = 'тест тест Тест Обязателльно Stackoverflow >!<';
var_dump(preg_replace('/[\x{0410}-\x{042F}]+.*[\x{0410}-\x{042F}]+/iu', '', $string));
输入字符串必须是unicode,输出也是unicode
答案 1 :(得分:2)
以下正则表达式将匹配Cyrrilic脚本中的字母:http://regex101.com/r/sO0uB7(基于Andrey Vorobyev的文本示例)
我认为这就是你所追求的目标。
我不确定i
修饰符是否必要。
答案 2 :(得分:0)
我的方法首先将字符串音译为ASCII(以尽可能多地保留信息),然后删除不允许的字符:
$url = iconv("utf-8", "us-ascii//TRANSLIT", $url);
$url = strtolower($url);
$url = preg_replace('~[^-a-z0-9_]+~', '', $url);
您必须在最后扩展正则表达式以匹配您需要的内容。