微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP修剪非字母Unicode

如何解决PHP修剪非字母Unicode

我需要在 UTF-8 中修剪所有字符的字符串,除了 来自任何语言的字母。对于早期测试,这工作正常,直到我开始使用 UTF-8 非拉丁字母:

<?PHP
$s = '\$5ı龢abc';
echo '<p>'.$s.'</p>';
while (!preg_match('/([\p{L}]+)/u',$s[0]))
{
 $s = substr($s,1);
 echo '<p>'.$s.'</p>';
}
?>

当前输出以下内容

$5ı和abc

$5ı和abc

5ı和abc

ı和abc

�和abc

和abc

��abc

�abc

ABC

我希望最终输出为:ı龢abc。我不太确定我错过了什么?

解决方法

使用单个字符索引不起作用,因为 PHP 不知道字符串中的“字符”,而只是索引字节。这显然是多字节字符的问题。但是无论如何你都做得太过手动了;只需替换all non-letter characters at the beginning of the string

$s = preg_replace('/^\P{L}*/u','',$s);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。