【发布时间】:2019-08-03 04:57:49
【问题描述】:
我又遇到了 preg_replace() 的问题。我非常需要一本关于 preg_replace() 的书。
我的意图是将 <td> author </td> 替换为 <td> Level1 </td>
有什么想法吗? <td> author </td> 被其他 HTML 元素包裹:
<td align="center">
<a onclick="return listItemTask('cb1','block')" href="javascript:void(0);">
<img width="16" height="16" border="0" alt="Blocked" src="images/tick.png">
</a>
</td>
<td>
Author
</td>
【问题讨论】:
-
你又遇到麻烦我一点也不奇怪。使用正则表达式解析 HTML 是自找麻烦。
-
每次在同一个句子中提到“regex”和“HTML”时,都会有人对此表示反对。问题是,您需要了解解析 HTML 和搜索恰好是 HTML 的文本之间的区别。 IMO,这是对正则表达式的有效使用;这个问题所需的功能可以通过文本编辑器中任何基于正则表达式的搜索和替换轻松实现。
-
@Ryan Kinal:通常我会同意你的观点,但在这种情况下,如果不需要解析,简单的字符串替换就足够了。如果需要解析,那么正则表达式将无法处理所有情况。
-
@mehaase 是的。那时你必须依赖解析器。如果没有嵌套标签,并且标签没有属性(甚至是特定的、已知的、具有近乎精确空格的相同顺序属性),您可以(很可能)使用正则表达式(或者甚至是简单的字符串替换,如果模式很简单)。用一个概括但复杂的案例来反驳一个具体的简单案例不是一个有效的论点。我在这里指的是原始问题中的特定情况,而不是用另一个标签及其内容替换一个标签及其内容的普遍问题。
-
@mehasse 说真的。告诉我
myHTMLString.replace(/<td>\s*author\s*<\/td>/g, '<td>level1</td>');无效。我敢你。
标签: php regex preg-replace