3
我有些情况下,我的客户端向我发送一个html字符串,其元素属性结构不正确。就像这样:将双引号内的双引号替换为html属性
<img src="../imgTest.jpg" alt="Something "quoted here, or here"">
我怎样才能动态改变这些情况下,以这样的未来?
<img src="../imgTest.jpg" alt="Something 'quoted here, or here'">
我需要这个html不显示在浏览器上,但要做一些操作。
我使用HtmlAgilityPack控制HTML的问题,但对于这些情况下,它改变了我的html字符串这一点,它是不是我想要的:
<img src="../imgTest.jpg" alt="Something" quoted="" here,="" or="" here="">
我与HtmlAgilityPack代码:
var htmlDoc = new HtmlDocument();
htmlDoc.OptionFixNestedTags = true;
htmlDoc.LoadHtml(myHtmlStr);
var htmlError = htmlDoc.ParseErrors.SafeAny();
if (!htmlError)
myHtmlStr = htmlDoc.DocumentNode.InnerHtml;
嗯,恐怕没有正则表达式的解决方案,这将看起来不错,安全。试试['(?<= <\ w + \ s [^ <] *)(?<!\ w + =)“(?!\ s * /?> | \ s + \ w + =”)'](http:/ /regexstorm.net/tester?p =(%3F%3C%3D%3C%5CW%2B%5CS%5B%5E%3C%5D *)(%3F%3C!%5CW%2B%3d)的22%( %3F!%5CS *%2F%3F%3E%7C%5CS%2B%5CW%2B%3D%22)I =%3cimg + SRC%3D%22%..%2fimgTest.jpg 22 + ALT%3D% 22%+%22quote + here%2c +或+ here%22%22%3e&r =%27)并替换为'''。 –
你的html片段是否像你的例子中的img一样是单个元素?它总是具有相同的属性,它们被破坏了吗? –
你可以尝试像['(= \ s *“[^ =”>] *)“([^ =”>] *)“([^ =”>] *“)'](https:// regex101.com/r/iK0wN9/2),并用'$ 1'$ 2'$ 3'替换,这不是非常可靠:> –