我有以下表格标签
$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">
问题是我的代码无法获取类属性或id属性。 我想要的是:
<form action="linkafterreplace.php" method="post" class="form-inputs">
ps:我替换了很多网址,所以每个网址都有自己的类属性,因此它可能不是表单输入
答案 0 :(得分:1)
您的正则表达式目前正在抓取整个表单标记并将其替换为
<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的计算机,因此语法可能略有偏差。
最简单的方法是检查表单标签是否有一个action元素是否使用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 =”的存在。如果是这样,我使用正则表达式替换来放入新文件名。否则,我使用正则表达式添加到我的原始答案的开头。
希望对您有所帮助!