我有一个网站,可以创建以下多种形式:
<form action="link1" method="post" >
<form action="link2" method="post" >
<form action="link3" method="post" > etc ...
现在我想要的是更改表单标记之间的整个文本,使其看起来像这样:
<form id="link">
我已经测试了许多技巧,但我无法解决我的问题。
答案 0 :(得分:1)
你试过这个吗?
$mixed = preg_replace('~(<form [^>]+>)(.+?)+(</form>)~i', '$1the form HTML replacement$3', '<form method="post">the form HTML content to replace</form>');
我使用此链接对其进行测试http://micmap.org/php-by-example/en/function/preg_replace
答案 1 :(得分:1)
目前还不清楚你究竟想做什么,但你应该考虑 DOM `来完成任务。
$doc = DOMDocument::loadHTML('
<form action="link1" method="post" >
<form action="link2" method="post" >
<form action="link3" method="post" >
');
foreach ($doc->getElementsByTagName('form') as $node) {
$node->removeAttribute('action');
$node->removeAttribute('method');
$node->setAttribute('id', 'somelink');
}
答案 2 :(得分:0)
让我们假设您的代码生成一个数组$ links [],如下所示:
$links = array("link1", "link2", "link3");
所以你的代码看起来像这样:
$re = "/\\<form action=\\\"([a-zA-Z0-9_-]+)\\\" method=\\\"post\\\" \\>/";
foreach($links as $value)
{
$str = "<form action=\"$value\" method=\"post\" >";
$subst = "<form id=\"$1\"> <input type=\"text\"></form>";
$new_link = preg_replace($re, $subst, $str, 1);
echo $new_link;
echo "<br>";
}
click here to see it in action 或here(如果第一个链接已死)
这里是$ re变量的详细信息:
希望有所帮助!
答案 3 :(得分:0)
试试这个:
preg_replace("~<form\s.*?>~i",'<form id="link">', '<form action="link3" method="post" >');