2015-06-27 2 views
-1

У меня есть сайт, которые создают различные формы следующим образом:PHP preg_replace текст между один тегом

<form action="link1" method="post" > 
<form action="link2" method="post" > 
<form action="link3" method="post" > etc ... 

Теперь все, что я хочу, чтобы изменить весь текст между тегом формы так будет выглядеть следующим образом:

<form id="link"> 

Я уже тестировал множество трюков, но я не мог решить свою проблему.

+1

пост здесь то, что вы уже пробовали! –

+0

Вам нужно предоставить образец ввода, вывод и то, что вы пробовали. – chris85

ответ

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'); 
} 
0

давайте предположим, что ваш код генерировать массив $ ссылки [], как это:

$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 (если первое звено мертво)

и вот $ повторно переменной в деталях:

enter image description here

надежда, что помогает!

0

попробовать это:

preg_replace("~<form\s.*?>~i",'<form id="link">', '<form action="link3" method="post" >');