この文字のような Unicode スペースをトリミングしようとしていますが、このソリューションを使用してそれを行うことができました。この解決策の問題は、通常の文字間の Unicode スペースがトリミングされないことです。たとえば、これは薄いスペースを使用します
私は正規表現について少し知っているので、この問題を解決するために表現をどのように変更すればよいのかわかりません
文字列の先頭と末尾にある制御文字を含む Unicode 空白をすべて削除し、文字列内の通常のスペースを除く制御文字を含むすべての Unicode 空白を削除するには、
「正規表現のデモ #1」および「正規表現 デモ #2」を参照してください。 ######詳細######
^[\pZ\pC] - 文字列
- または
- 文字列の末尾に 1 つ以上のスペースまたは制御文字
- 文字列
- 通常の空白 (
(?! )[\pZ\pC]
@MonkeyZeus による提案)、2 番目の正規表現では、[^\S \r\n] を使用する必要があることを意味します。 PHP デモを見る : リーリー
による提案)、2 番目の正規表現では、
を使用する必要があることを意味します。
リーリー
このような Unicode スペース \u{2009} がさまざまな場所でどのように問題を引き起こす可能性があるか。 したがって、すべての Unicode スペースを通常のスペースに置き換えてから、trim() を適用します。
注: コメント内の文字列は debug::writeUni($string, $trimString); で表されます。 このクラス から実装されます。
文字列の先頭と末尾にある制御文字を含む Unicode 空白をすべて削除し、文字列内の通常のスペースを除く制御文字を含むすべての Unicode 空白を削除するには、
を使用します。 リーリー「正規表現のデモ #1」および「正規表現 デモ #2」を参照してください。 ######詳細######
^[\pZ\pC] - 文字列
の先頭に 1 つ以上のスペースまたは制御文字- または
- 文字列の末尾に 1 つ以上のスペースまたは制御文字
- または
- 文字列
内の任意の場所に 1 つ以上のスペースまたは通常のスペース以外の制御文字- 通常の空白 (
\x20(?! )[\pZ\pC]
を@MonkeyZeus
による提案)、2 番目の正規表現では、
[^\S \r\n]を使用する必要があることを意味します。
PHP デモを見る :リーリー
このような Unicode スペース \u{2009} がさまざまな場所でどのように問題を引き起こす可能性があるか。 したがって、すべての Unicode スペースを通常のスペースに置き換えてから、trim() を適用します。
リーリー注: コメント内の文字列は debug::writeUni($string, $trimString); で表されます。 このクラス から実装されます。