使用 preg_replace 重写表单属性

Rewrite form attributes using preg_replace

我有一个完整的 HTML 页面加载到一个字符串中,我需要根据以下内容修改所有 form

原文HTML:

<form Random=Random>orignal inputs</form>

想要HTML:

<form Method='POST' action="index.php">orignal inputs</form>

正则表达式:

<form .*?>(.*?)</form>

替换字符串:

 <form Method='POST' action="index.php"></form>

说明: 第一个 .*? 匹配零个或多个任意字符(新行除外),但仅匹配到达 '>'

所需的最少字符

(.*?) 再次匹配零个或多个任何字符(新行除外),但只匹配达到 < 所需的数量,并创建一个可以是 [=27] 的正则表达式组=] (http://www.regular-expressions.info/backref.html) 在你的替换字符串中。

在替换字符串中, 是反向引用,在此示例中,指向 'original inputs'。

对于此类任务,您可以尝试使用 Symfony 框架的 Crawler component。 它可以帮助您导航 DOM 和设置节点的属性。

正确的方法是使用 dedicated classes provided by PHP.

管理 DOM 树

爬虫组件是一个辅助库,可以方便操作。