【发布时间】:2018-01-26 18:45:20
【问题描述】:
我有一个来自 HTML 表格的输入。 首先用'_'替换想要的间距。然后用空格替换 HTML 标记,这样我就可以按列提取信息。
我希望我的输出是:
100 Request_in_progress Pending_response 789653686
Instead the output adds extra spacing like this
$testString = '<tr><td>100</td><td>Request in progress</td><td></td><td></td><td>Pending response</td><td>789653686</td><td></td><td></td><td></td></tr>';
$rmSpace = str_replace(' ', '_', $testString);
$tags = '(<td>||</td>||<tr>||</tr>||<th>||</th>)';
$result = preg_replace($tags, ' ', $rmSpace);
echo $result;
【问题讨论】:
-
您的正则表达式中有
||,它匹配字符串开头/结尾处以及字符串内任何字符之间的任何空字符串。这是一个错字,您应该使用单个|。 -
表达这个正则表达式的更简洁的方式是
preg_replace('~</?t[drh]>~', ' ', $rmSpace); -
如果您尝试从 HTML 中获取内容,而不是使用无处不在的正则表达式,请使用
DOMDocument和DOMXPath- 它更简单、更可靠 -
@RamRaider 取决于用例。为了使用一次性脚本从表中抓取一些数据,我每次都会使用正则表达式
标签: php regex html-table preg-replace removing-whitespace