Php Regex-仅匹配表标记中的样式属性
我希望仅从表标记中删除某些样式属性。所以我可能会有一条像这样的乱七八糟的线:Php Regex-仅匹配表标记中的样式属性,php,regex,Php,Regex,我希望仅从表标记中删除某些样式属性。所以我可能会有一条像这样的乱七八糟的线: <table border="0" width="641" style="width:480.95pt;margin-left:4.65pt;border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt"> <tbody><tr style="mso-yfti
<table border="0" width="641" style="width:480.95pt;margin-left:4.65pt;border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt">
<tbody><tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;height:23.25pt">
<td width="299" nowrap="" colspan="3" valign="top" style="width:224.45pt;border-top:
solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:none;
border-right:solid black 1.0pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-left-alt:solid windowtext .5pt;mso-border-right-alt:solid black .5pt;
background:#538ED5;padding:0in 5.4pt 0in 5.4pt;height:23.25pt">
在我学习正则表达式的过程中,如果能给我一个解释,我将不胜感激。正则表达式本身就是一个完整的世界。通常有几种方法可以达到相同的结果。以下是其中一种方法:
<table[^>]+style=[^>]*?[" ;]width:([0-9.]+pt)
]+样式=[^>]*?[“;]宽度:([0-9.]+pt)
我将对其进行分解以解释其中的一些内容,但要完全理解,您需要学习regex语法
[^>]+
-将选择到结束标记。如果第一个元素不匹配,这将阻止在下一个元素中搜索
style=[^>]*?
-确保标记中有一个style属性
[”;]
width:-确保选择了准确的属性,而不是其他属性的一部分(如边框宽度)
([0-9.]+pt)
-选择一个或多个数字和/或点
您不需要定义结束表标记,因为第一条规则会停止第一个标记中的搜索
最后,这些年来,我们每个人都学到了一些智慧的话语
当涉及到处理复杂的HTML结构时,无论它是哪种编码语言,使用专用解析器几乎总是比将其视为字符串要好。非常感谢您的时间。我找不到一个很好的HTML解析解决方案来清理HTML,所以我正在这样做。当用户在JS WYSIWYG编辑器中从MS Word粘贴时,会出现混乱的HTML。通过一些字符串替换,HTML大小可以从大约100k个字符减少到30k个字符。顺便说一句,我最后使用的是:
]+style=[^>]*?[“;](宽度:\s*[0-9.]+pt;?)
<table[^>]+style=[^>]*?[" ;]width:([0-9.]+pt)