Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Regex-仅匹配表标记中的样式属性_Php_Regex - Fatal编程技术网

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)