php用正则表达式替换标签

时间:2015-06-27 02:53:21

标签: php regex

我在许多论坛中搜索过替换标签之间的文本,但我得到的是如何删除标签之间的文本等等。这不是我想要的。这是一个小例子,你可以理解我在说什么。 我想替换:

<form action="link1" method="post" name="form" id="form">

我想要做的是摆脱这种形式并将其改为:

<form action="link2" ....> 

现在,我的问题不是替换,而是选择表格标签 我希望你理解我。

3 个答案:

答案 0 :(得分:1)

您有结构化数据(html是结构化数据),因此请使用此结构。你想要做的是更改属性值,使用DOMDocument很容易:

$dom = new DOMDocument;
$dom->loadHTML($yourHTML);

$formTagList = $dom->getElementsByTagName('form');

foreach ($formTagList as $formNode) {
    if ($formNode->hasAttribute('action') && $formNode->getAttribute('action') === 'link1')
        $formNode->setAttribute('action', 'link2');
}

$result = $dom->saveHTML();

答案 1 :(得分:0)

如果要使用正则表达式,则应使用preg_replace - http://php.net/manual/en/function.preg-replace.php。如果你有一个样本文档和你想要的输出,那也会有所帮助。

答案 2 :(得分:0)

我不确定我是否理解你的问题,但根据你的样本,它非常简单。你可以使用这个正则表达式:

<form.*?>

替换字符串

<form action="link2" ....> 

<强> Working demo

Php代码

$re = "/<form.*?>/"; 
$str = "<form action=\"link1\" method=\"post\" name=\"form\" id=\"form\"></form>"; 
$subst = "<form action=\"link2\" ....>"; 

$result = preg_replace($re, $subst, $str);

//result:
//     <form action="link2" ....></form>