Comment remplacer Microsoft-citations codées en PHP
J'ai besoin de remplacer Microsoft Word version de simples et doubles guillemets (“ ” ‘ ’
) avec régulièrement des guillemets ("et ") en raison d'un problème de codage de ma demande. Je n'ai pas besoin d'eux pour être en entités HTML et je ne peux pas modifier mon schéma de base de données.
J'ai deux options: soit utiliser une expression régulière ou un tableau.
Est-il une meilleure façon de le faire?
Vous devez vous connecter pour publier un commentaire.
Considérant que vous ne voulez remplacer un peu spécifique et bien identifié, les caractères, je voudrais aller
str_replace
avec un tableau: manifestement, vous n'avez pas besoin de l'artillerie lourde de la regex va vous apporter 😉Et si vous rencontrez quelques autres caractères spéciaux (putain de copier-coller à partir de Word de Microsoft...), vous pouvez simplement les ajouter à ce tableau à chaque fois que est nécessaire /à chaque fois qu'ils sont identifiés.
La meilleure réponse que je peux donner à ton commentaire est probablement ce lien: Convertir les Guillemets avec PHP
Et le code associé (citant la page):
(Je n'ai pas de Microsoft Word sur cet ordinateur, donc je ne peux pas le tester par moi-même)
Je ne me souviens pas exactement de ce que nous avons utilisées au travail (je n'étais pas le seul d'avoir à traiter avec ce genre d'entrée), mais c'était le même genre de trucs...
chr(149)
(bullet) et de le remplacer par un astérisque ainsi. Cette page a une liste de plusieurschr()
de caractères que vous souhaitez les convertir en.J'ai trouvé une réponse à cette question. Vous avez juste besoin d'une ligne de code à l'aide de
iconv()
fonction en php:$output = iconv('CP1252', 'ASCII//TRANSLIT', $input);
PHP Notice: iconv(): Detected an illegal character in input string in php shell code on line 1
.iconv
avant de les enregistrer dans la base de données lors de la création du compte.Fatal error: Call to undefined function iconv()
" Assurez-vous de tester votre code sur chaque plate-forme qu'il doit exécuter.Votre Microsoft codé citations sont probablement le typographique des guillemets. Vous pouvez simplement remplacer par des
str_replace
si vous connaissez le codage de la chaîne que vous souhaitez remplacer.Voici un exemple pour de l'UTF-8, mais à l'aide d'une simple cartographie de tableau avec
strtr
:Si vous avez besoin d'un autre encodage, vous pouvez utiliser
mb_convert_encoding
pour convertir les touches.\x
échappe, ne pourrait-on pas simplement inclure les caractères dans votre fichier source?Si comme moi vous arrivez ici avec une gamme énorme de cassé ASCII /Microsoft Word personnages qui font des choses étranges de votre CMS ou RTE et iconv ne fonctionne pas, alors cette folle fonction est peut-être juste pour vous.
Assurez-vous que votre encodage est UTF-8 lorsque vous enregistrez cette fonction dans un fichier.
Nous avons utilisé la suite. Il traite avec un peu plus de caractères spéciaux.
$text
avant d'exécuter le remplace en elle. Il pourrait déjà être une chaîne Unicode et vous êtes à la déformation d'elle.Chaque unique de la réponse à la question précédente, sauf pour Gumbo est sera mutilation des chaînes Unicode:
Résultats dans:
La fonction iconv:
Résultats dans:
Vous pouvez la changer en
//IGNORE
, qui permettra d'éliminer les personnages, mais pas les traduire.C'est la meilleure façon de remplacer Microsoft citations codées en CP1252. Si ils sont en Unicode et vous devez les remplacer, utilisez Gumbo réponse:
Prises de cette réponse, avec quelques modifications. Si vous souhaitez un contrôle sur ce que vous rechercher/remplacer, utilisez cette fonction.