php 如果表单标签不存在则添加操作

php add action to form tag if not exists

我有以下表单标签

$content = '<form action="link.php" method="post" class="form-inputs">';
$content1 = '<form method="post" class="form-inputs">';

所以使用我的正则表达式代码:

preg_replace("~<form\s(.|\n)*?>~i",'<form action="linkafterreplace.php" method="post">', $content);

当我对 $content 和 $content1 使用此代码时,我得到的是:

<form action="linkafterreplace.php" method="post">

问题是我的代码无法获取 class 属性或 id 属性。 我想要的是:

<form action="linkafterreplace.php" method="post" class="form-inputs">

ps :我要替换许多 url,所以每个 url 都有自己的 class 属性,所以它可能不是表单输入

您的正则表达式目前正在抓取整个表单标签并将其替换为

<form action="linkafterreplace.php" method="post">

解决此问题的最佳方法是检查

是否存在
<form

并将其替换为

<form action="linkafterreplace.php" method="post"

你需要的电话是(我没有测试过,因为我在没有 PHP 的电脑上):

preg_replace("~<form~i",'<form action="linkafterreplace.php" method="post"', $content);

希望这是有道理的...


编辑:

由于评论,我正在稍微修改我的答案。同样,我没有带 PHP 的计算机,因此语法可能略有偏差。

检查表单标签是否有动作元素最简单的方法是使用preg_match,像这样:

if (preg_match("~action=~i")) {    // Check to see if you find "action="
    preg_replace("~action=\".*\"~i", "action='linkafterreplace.php'", $content); // IFF so, replace it using regex.
} else {
    preg_replace("~<form~i",'<form action="linkafterreplace.php"', $content); // Otherwise add it it.
}

我只是使用正则表达式来检查表单元素内部是否存在 "action="。如果是这样,我使用正则表达式替换来输入新文件名。否则,我使用正则表达式添加到开头,就像我原来的答案一样。

希望对你更好!