我有一个网站更新程序,将每个 p 元素转换为textarea,用户在内容中键入,然后每个textarea转换回 p &我抓住了最终的HTML&将它存储在我的SQL数据库中。
我的问题:在Internet Explorer中,当我再次抓取HTML时,它稍微更改了html。例如:
// From this originally
<img id="headingpic"/><div id="myContent">
// To this
<img id="headingpic"/>
<div id="myContent">
这很重要,因为现在展出的img&amp; amp;下面的div。
有时IE会插入一个“\ n”,有时它会是“\ n”,有时它只是一个“\ n”。我试图想出一个正则表达式来移除这些终点线(&amp; spacing),无论它们的模式如何。我对正则表达式有很多困难,它们对我来说似乎很神秘。
如果我解释我的算法,你可以建议在正则表达式中实现这一点的“角色”吗?
我试图在javascript或python中执行此操作:
# Python: should I use replace for this? Would my regular expression look something like this?
HTML_CONTENT.replace( "^[ \t\n\r]" ) # this removes all whitespace as far as I know
答案 0 :(得分:0)
我会以不同的方式解决这个问题:
首先按线溢出。
html_content_list = HTML_CONTENT.split("\n"); // Split by line;
然后用.trim()
删除末尾的所有空格(假设我们正在讨论字符串,每行一行,首先测试null)
for(var i in html_content_list)
{
html_content_list[i] = html_content_list[i].trim();
}
然后,如果它确实需要一个新行,最后添加它:
html_content_list.join("\n");
答案 1 :(得分:0)
你的正则表达式需要更多的字符,或者\ s:
HTML_CONTENT.replace( "^[ \t\n\r\f\v]" )
或者
HTML_CONTENT.replace( "^[\s]" )
\ v匹配垂直制表符\ u000B。
\ f匹配换页符\ u000C。
我一开始误解了这个问题,但这就是你如何做到这一点python:
import re
HTML_CONTENT = """\
<img id="headingpic"/> abcdef
qwerty..??,ksjhe173((:$
<div id="myContent">
"""
print re.sub(">[^<]*<", "><", HTML_CONTENT)
输出:
<img id="headingpic"/><div id="myContent">
或者,如果您只想删除空格和换行符:
import re
HTML_CONTENT = """\
<img id="headingpic"/>
<div id="myContent">
"""
print re.sub(">[\s]*<", "><", HTML_CONTENT)
输出:
<img id="headingpic"/><div id="myContent">