検索

ホームページ  >  に質問  >  本文

PHP は Unicode スペースをトリミングします

この文字のような Unicode スペースをトリミングしようとしていますが、このソリューションを使用してそれを行うことができました。この解決策の問題は、通常の文字間の Unicode スペースがトリミングされないことです。たとえば、これは薄いスペースを使用します

リーリー

私は正規表現について少し知っているので、この問題を解決するために表現をどのように変更すればよいのかわかりません

P粉163951336P粉163951336384日前1039

全員に返信(2)返信します

  • P粉557957970

    P粉5579579702023-11-14 00:59:08

    文字列の先頭と末尾にある制御文字を含む Unicode 空白をすべて削除し、文字列内の通常のスペースを除く制御文字を含むすべての Unicode 空白を削除するには、

    を使用します。 リーリー

    「正規表現のデモ #1」および「正規表現 デモ #2」を参照してください。 ######詳細######

    ^[\pZ\pC] - 文字列

    の先頭に 1 つ以上のスペースまたは制御文字
    • | - または
    • [\pZ\pC] $ - 文字列の末尾に 1 つ以上のスペースまたは制御文字
    • | - または
    • (?! )[\pZ\pC] - 文字列 内の任意の場所に 1 つ以上のスペースまたは通常のスペース以外の制御文字
    • [^\S ] - 通常の空白 (\x20
    • )
    • を除く任意の空白 一般的な改行も「除外」する必要がある場合は、(?! )[\pZ\pC]
    • (?![ \r\n])[ \pZ \pC に置き換えます。 ]
    (

    @MonkeyZeus による提案)、2 番目の正規表現では、[^\S \r\n] を使用する必要があることを意味します。 PHP デモを見る : リーリー

    返事
    0
  • P粉445750942

    P粉4457509422023-11-14 00:22:00

    このような Unicode スペース \u{2009} がさまざまな場所でどのように問題を引き起こす可能性があるか。 したがって、すべての Unicode スペースを通常のスペースに置き換えてから、trim() を適用します。

    リーリー

    注: コメント内の文字列は debug::writeUni($string, $trimString); で表されます。 このクラス から実装されます。

    返事
    0
  • キャンセル返事