php从标记中删除所有属性

时间:2015-06-28 15:34:41

标签: php regex

这是我的代码:

$content2= preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i",'<$1$2>', $content1);

此代码会删除我网站中所有代码的所有属性,但我想要的是仅删除form代码中的属性。这就是我的尝试:

$content2 = preg_replace("/<form([a-z][a-z0-9]*)[^>]*?(\/?)>/i",'<$1$2>', $content1); 

$content2 = preg_replace("/<(form[a-z][a-z0-9]*)[^>]*?(\/?)>/i",'<$1$2>', $content1); 

2 个答案:

答案 0 :(得分:1)

这应该为你做。

<?php
$content1 = '<form method="post">test</form><form>2</form><form action=\'test\' method="post" type="blah"><img><b>bold</b></form>';
$content2 = preg_replace("~<form\s+.*?>~i",'<form>', $content1);
echo $content2;

输出:

<form>test</form><form>2</form><form><img><b>bold</b></form>

说明和演示:https://regex101.com/r/oA1fV8/1

\s+在开放form标记后需要空格,如果我们假设有一个属性,那么我们使用.*?将一切都带到下一个> }。我们不需要捕获组,因为您唯一需要的是空form元素,对吧?

答案 1 :(得分:0)

回答相关问题:

data

然后像这样使用电话呼叫

true

Related question with more answers