PHP schneidet Unicode-Leerzeichen ab
P粉163951336
P粉163951336 2023-11-13 08:49:45
0
2
779

Ich versuche, Unicode-Leerzeichen wie dieses Zeichen zu kürzen, und das ist mir mit dieser Lösung gelungen. Das Problem bei dieser Lösung besteht darin, dass Unicode-Leerzeichen zwischen normalen Zeichen nicht entfernt werden. Hier wird zum Beispiel Thin Space verwendet

$string = "   test   string   "; echo preg_replace('/^[pZpC]+|[pZpC]+$/u', '', $string); // outputs: test   string

Ich kenne mich ein wenig mit regulären Ausdrücken aus, daher weiß ich nicht, was ich an meinem Ausdruck ändern soll, um dieses Problem zu lösen

P粉163951336
P粉163951336

Antworte allen (2)
P粉557957970

要删除字符串开头和结尾处的所有带有控制字符的 Unicode 空白,以及删除字符串内任何位置除常规空格之外的所有带有控制字符的 Unicode 空白,您可以使用

preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$|(?! )[\pZ\pC]/u', '', $string) // Or, simply preg_replace('/^\s+|\s+$|[^\S ]/u', '', $string)

请参阅正则表达式演示 #1和正则表达式演示 #2

详细信息

  • ^[\pZ\pC]+- 字符串开头的一个或多个空格或控制字符
  • |- 或
  • [\pZ\pC]+$- 字符串末尾的一个或多个空格或控制字符
  • |- 或
  • (?! )[\pZ\pC]- 字符串内任意位置除常规空格之外的一个或多个空格或控制字符
  • [^\S ]- 除常规空格 (\x20) 之外的任何空格

如果您还需要“排除”常见换行符,请将(?! )[\pZ\pC]替换为(?![ \r\n])[ \pZ\pC]由 @MonkeyZeus 建议) ,在第二个正则表达式中,这意味着您需要使用[^\S \r\n]

查看 PHP 演示:

echo preg_replace('~^[\pZ\pC]+|[\pZ\pC]+$|(?! )[\pZ\pC]~u', '', 'abc def ghi '); // => abc defghi echo preg_replace('/^\s+|\s+$|[^\S ]/u', '', 'abc def ghi '); // => abc defghi
    P粉445750942

    这样的 Unicode 空格 \u{2009} 如何在不同的地方引起问题。 因此,我会将所有 unicode 空格替换为常规空格,然后应用 trim()。

    $string = "   test   string and XY \t "; //\u{2009}\u{2009}\u{2009}test\u{2009}\u{2009}\u{2009}string\u{2009}and\x20XY\x20\x09\u{2009} $trimString = trim(preg_replace('/[\pZ\pC]/u', ' ', $string)); //test\x20\x20\x20string\x20and\x20XY

    注意:注释中字符串的表示是用 debug::writeUni($string, $trimString); 来表示的。从此类实现。

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!