使用 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 树
爬虫组件是一个辅助库,可以方便操作。
我有一个完整的 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 树爬虫组件是一个辅助库,可以方便操作。