Regex pour remplacer esperluette, mais pas quand ils sont dans une URL
Question
J'ai donc ce regex:
&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)
qui correspond à un bloc de texte tout et l '
Cependant, si j'ai cette chaîne:
& & & & & <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &</a>
---------------------------------------------------------^
... la marque et aussi est ciblé - et comme je l'utilise pour remplacer le & 's avec et l'URL devient alors invalide:
http://localhost/MyFile.aspx?mything=2&this=4
D'oh! Est-ce que quelqu'un sait d'une meilleure façon d'encodage et de qui sont pas dans une URL.
La solution
Non, l'URL ne devient pas invalide. Le code HTML est:
<a href="http://localhost/MyFile.aspx?mything=2&this=4">
Cela signifie que le code qui n'a pas été correctement codé est codé correctement maintenant, et l'URL que le lien contient est:
http://localhost/MyFile.aspx?mything=2&this=4
Alors, ce n'est pas un problème que le caractère et dans le code est codé, au contraire, le code est maintenant correct.
Autres conseils
En Powershell cela pourrait se faire comme suit:
$String ='& & & & & <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &</a>'
$String -replace '(?<!<[^<>]*)&', "&"
rendements
& & & & & <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &</a>
Dissection de la regex:
- Le regard autour (?
- Toutes les chaînes et sont ensuite et remplacée.