在PHP 7.4。*中,使用preg_replace保留空格,拉丁和西里尔字母的正确方法是什么?

摆弄

考虑以下。

function cleanText($text) {
    return preg_replace("/[^0-9\p{Latin}\p{Cyrillic}\.\-\_\s+]+/u","",$text);
}
$tmp = "intro_|_text  Mary had a little lamb, we'll be right back   123456789  абвгдђежзијкл     ,./'*     αβγδε    šđ";
echo cleanText($tmp);

预期的输出是(在phpfiddle.org和repl.it上都可以看到):

intro__text Mary had a little lamb well be right back 123456789 абвгдђежзијкл . šđ

但是,带有PHP 7.4.8的Xampp,并且此站点返回以下内容(后者与每个PHP 7.4。*一起返回):

aMaryhadalittlelambwellberightback123456789абнллклл.šđ

如果\p{Latin}\p{Cyrillic}删除,则保留空格。里面有单个空格和特定字母的正确方法是preg_replace什么?

维克多·史翠比维

您可以使用\p{L}Unicode属性代替其支持在此处似乎被破坏的属性。

您可以使用

preg_replace('/[^0-9\\p{L}\\s._+-]+/u', '', $text)

还要注意,-在字符类的末尾使用它是更安全的,以免转义它。.并且_不需要转义,这_是一个单词char,并且.在字符类中失去了其特殊含义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

西里尔字母的问题。使用AJAX,PHP和MySQL

来自分类Dev

PHP的preg_match得到西里尔字母单词

来自分类Dev

西里尔字母显示为??? ???? 在PHP中

来自分类Dev

如何使用PHP删除字符串中的第一个西里尔字母

来自分类Dev

PHP的preg_match-特殊西里尔字符

来自分类Dev

PHP在CLI上具有西里尔字母的内容?

来自分类Dev

PHP 7和phpMyAdmin的PHP致命错误

来自分类Dev

PHP 7中的同步块

来自分类Dev

PHP 7中的匿名类

来自分类Dev

在WAMP中使用PHP 7

来自分类Dev

使用 php 7 配置 MSSQL

来自分类Dev

在python lxml库中使用西里尔字母的正确方法是什么

来自分类Dev

如何使用PHP 7启用php扩展

来自分类Dev

PHP的preg_replace除了字母数字,空格和重音字母

来自分类Dev

处理PHP 7返回类型的正确方法

来自分类Dev

PHP中“ filter_var”和“ preg_replace”之间的后端区别是什么?

来自分类Dev

PHP 7 preg_replace PREG_JIT_STACKLIMIT_ERROR 用简单的字符串

来自分类Dev

preg_match不区分拉丁字母和西里尔字母

来自分类Dev

Windows 7中未加载PHP 7 FTP扩展

来自分类Dev

PHP 7和严格的“资源”类型

来自分类Dev

Zend 框架 2 和 PHP 7

来自分类Dev

PHP7中的PECL yaml

来自分类Dev

PHP7中的foreach更改

来自分类Dev

APCu不存储在PHP 7中

来自分类Dev

PHP7中的PHPSpec捕获TypeError

来自分类Dev

PHP无法在IIS7中执行

来自分类Dev

在PHP7上使用Phalcon?

来自分类Dev

使用php 7与Interbase的多个连接的错误

来自分类Dev

REST 服务使用 PHP 7