J'essaie de couper les espaces Unicode comme ce caractère et j'ai pu le faire en utilisant cette solution. Le problème avec cette solution est qu'elle ne supprime pas les espaces Unicode entre les caractères normaux. Par exemple, celui-ci utilise un espace mince
$string = " test string "; echo preg_replace('/^[pZpC]+|[pZpC]+$/u', '', $string); // outputs: test string
Je connais un peu les expressions régulières, donc je ne sais pas quoi changer mon expression pour résoudre ce problème
Pour supprimer tous les espaces Unicode avec des caractères de contrôle au début et à la fin d'une chaîne, et pour supprimer tous les espaces Unicode avec des caractères de contrôle, à l'exception des espaces normaux n'importe où dans une chaîne, vous pouvez utiliser
VoirExpressions régulières Démo #1et Expressions régulièresDémo #2.
Détails
^[pZpC]+
- un ou plusieurs espaces ou caractères de contrôle en début de chaîne|
- ou[pZpC]+$
- un ou plusieurs espaces ou caractères de contrôle|
- ou(?! )[pZpC]
- Un ou plusieurs espaces ou caractères de contrôle n'importe où dans la chaîne autre que les espaces normaux[^S ]
- 除常规空格 (x20
)Si vous devez également "exclure" les nouvelles lignes courantes, remplacez
), dans la deuxième regex, cela signifie que vous devez utiliser(?! )[pZpC]
替换为(?![ rn])[ pZpC]
(由 @MonkeyZeus 建议) ,在第二个正则表达式中,这意味着您需要使用[^S rn]
par(?![ rn])[ pZpC]
(Suggéré par @MonkeyZeus[^S rn]
.Voir la démo PHP
:Comment les espaces Unicode comme u{2009} peuvent causer des problèmes à différents endroits. Je remplacerais donc tous les espaces Unicode par des espaces réguliers, puis appliquerais trim().
Remarque : La représentation des chaînes dans les commentaires est représentée par debug::writeUni($string, $trimString);. Implémenté à partir decette classe.