8
votes

Le remplacement d'une pause de ligne UTF-8 est-il sûr?

Si j'ai une chaîne UTF-8 et que vous souhaitez remplacer les pauses de ligne avec le code HTML code>, est-ce sûr?

$var = str_replace("\r\n", "<br>", $var);


0 commentaires

3 Réponses :


7
votes

str_replace () est sûr pour tout caractère ASCII-SAFE.

BTW, vous pouvez également consulter le NL2BR ()


0 commentaires

1
votes

1st: Utilisez le balisage d'échantillon de code pour le code dans vos questions.

2e: oui, il est enregistré. p>

3ème: Ce n'est peut-être pas ce que vous voulez archirog. Cela pourrait être meilleur: p>

$var = str_replace(array("\r\n", "\n", "\r"), "<br/>", $var);


0 commentaires

17
votes

UTF-8 est conçu pour que les séquences multi-octets ne contiennent jamais de quelque chose qui ressemble à un caractère ASCII. C'est-à-dire que vous rencontrez un octet avec une valeur dans la plage 0-127, vous pouvez le supposer en toute sécurité pour être un caractère ASCII.

Et cela signifie que tant que vous n'essayez pas de remplacer les caractères ASCII avec des caractères ASCII, str_replace doit être sûr.


7 commentaires

* Essayez uniquement de remplacer les caractères ASCII avec des caractères ASCII.


+1 pour l'explication appropriée. Je pense que les autres ont essayé de dire la même chose, mais c'est la seule réponse qui me rendait un sens idéal pour moi.


@Potatoswatter: Oops Ouais, c'est un point assez important. Édité. ;)


En fait, c'est plus sûr que cela même. UTF-8 est conçu de manière à ce que vous puissiez effectuer des remplacements de texte sensibles d'octets, sur UTF-8, de manière sûre et valide, tant que toutes les entrées et sorties sont valides UTF-8 Strings! Et vous n'obtiendrez jamais d'erreur. Non seulement peut-il utiliser Str_replace pour les remplacements ASCII dans une chaîne UTF-8, mais également utiliser Str_replace pour les remplaçants UTF-8 dans une chaîne UTF-8.


UTF8 est vraiment génial !. Ils ont même pensé à l'octet-seulement-conscient! Merci pour la perspicacité.


En réalité, la séquence par séquence remplacer est sûre tant que les séquences sont des séquences UTF-8 valides: même si vous remplacez "שלום" par "םלום" par "和平" comme Séquences d'octets Sans sécurité par UTF-8 conception


@Artyom: Eh bien, oui, mais c'est vrai pour chaque codage sain. Compte tenu de trois chaînes S, S0 et S1, où S0 est une sous-chaîne de S, tant que tous les trois sont valables dans le codage E, le remplacement de S0 pour S1 en S sera aussi produire une chaîne valable dans le codage E. Je ne vois pas ce qui est si spécial à ce sujet. La chose intéressante à propos de UTF8 est la garantie qu'il offre pour Autres codages (ASCII, dans ce cas)