怎么用PHP的trim()函数去除中文空格

寻技术 PHP编程 2023年07月12日 102

今天小编给大家分享一下怎么用PHP的trim()函数去除中文空格的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、什么是中文空格?

中文空格在不同的输入法下展现不同,但大致上相同,都是一个占位符或半角符号,可以用键盘上的空格键输入。中文空格在编程语言的视角里就是一个字符串,但和普通的空格不同,它和字符一样占用一个字节,但它的 ASCII 码和普通的空格不同。

二、PHP去除两端中文空格的方法

使用 PHP 的内置函数去除字符串两端的中文空格通常有两种方法:

方法一:使用 trim() 函数

PHP 语言提供了 trim() 函数,该函数可以去除字符串两端的空白字符,包括空格、制表符、换行符等。但是,该函数默认只能去除 ASCII 码值范围内的空格字符,对于中文空格无能为力。

在解决中文空格的问题时,我们可以扩展 trim() 函数的功能。可以使用正则表达式匹配中文空格,并通过 trim() 函数去除掉。具体代码如下:

function chn_trim($str){
    return preg_replace('/^[p{Zs}p{Zp}]+|[p{Zs}p{Zp}]+$/u', '', $str);
}

在上述代码中,我们使用了字符类 p{Zs} 和 p{Zp},它们分别用于匹配 Unicode 中的空格和段落分隔符,加上修饰符 /u 后可以正确地识别中文空格。

该方法可以有效解决中文空格的问题,但其缺点在于,需要为每个要去除中文空格的字符串都调用 chn_trim() 函数,而且需要重新封装函数,不够简洁。

方法二:使用 PHP 的全局函数

为了让代码更加规范和简洁,我们可以在 PHP 的全局函数中添加一个函数,用于全局去除字符串两端的中文空格。具体代码如下:

if(!function_exists('trim_cn')){
    function trim_cn($string){
        $string = preg_replace('/^[p{Zs}p{Zp}]+|[p{Zs}p{Zp}]+$/u', '', $string);
        return trim($string);
    }
}

在上述代码中,我们首先使用了和方法一相同的正则表达式,通过 preg_replace() 函数将字符串两端的中文空格去除。由于我们需要将该函数作为全局函数使用,因此我们使用 if(!function_exists('trim_cn')) 条件判断,判断该函数是否已经存在,如果不存在,则定义该函数,否则不做任何处理。

这种方法具有一定的普适性,不再需要对每个要去除中文空格的字符串分别调用 chn_trim() 这个自定义函数。通过在全局中定义该函数,可以减少代码量,提高代码的可读性和可维护性。

关闭

用微信“扫一扫”