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&amp;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.

Était-ce utile?

La solution

Non, l'URL ne devient pas invalide. Le code HTML est:

<a href="http://localhost/MyFile.aspx?mything=2&amp;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 '(?<!<[^<>]*)&', "&amp;"

rendements

&amp; &amp; &amp; &amp; &amp; <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &amp;</a>

Dissection de la regex:

  1. Le regard autour (?
  2. Toutes les chaînes et sont ensuite et remplacée.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top