从PHP上的字符串中删除EN空间

时间:2017-08-09 18:50:54

标签: php regex ascii trim

在我的一段代码中检测到rtrim()没有删除字符串末尾的空格。

调查,我看到该字符串包含 EN SPACE (U + 2002)

$str = 'ANDREWS CAROLE [US]';
// rawurlencode($s) //--> "ANDREWS%20CAROLE%E2%80%82%5BUS%5D"
$pat = "/\[(.*?)\]/";
$str = preg_replace($pat,'',$str); //--> "ANDREWS CAROLE " -> ANDREWS%20CAROLE%E2%80%82"

尝试但失败Filter all types of whitespace in PHP

$new = preg_replace('\p{Zs}$', '', $s)

我不知道这个空间的$character_mask值与rtrim

一起使用

2 个答案:

答案 0 :(得分:1)

您可以在模式之前使用[\p{Z}\t]*来匹配零个或多个可选空格,包括unicode空格:

$str = 'ANDREWS CAROLE [US]';
var_dump ( preg_replace('/[\p{Z}\t]*\[(.*?)\]/u', '', $str) );
//=> string(14) "ANDREWS CAROLE"

答案 1 :(得分:0)

你试试:

<?php

$string = preg_replace('/\s*\[(.*?)\]/u','', 'ANDREWS CAROLE [US]');

var_dump($string);

输出:

string(14) "ANDREWS CAROLE"