如何仅小写HTML元素

时间:2011-04-20 15:13:19

标签: php regex

我如何小写所有HTML元素但不是它们的属性或属性值?

我找到了很多例子,比如

$newString = preg_replace("/<[^>]+>/e", "strtolower('\\0')", $oldString); 

但它会降低所有内容,而不仅仅是标签。

4 个答案:

答案 0 :(得分:1)

尝试以下方法:

$newString = preg_replace( "/<([^> ]+)/e", "strtolower('\\0')", $oldString )

答案 1 :(得分:0)

$newString = preg_replace("/</?\w+/e", "strtolower('\\0')", $oldString); 

答案 2 :(得分:0)

怎么样:

$oldString = "<H1 CLASS='abc'>HGKJHG</H1>\n< P ClAsS='AbC123'>HKJGHG</P>";
$newString = preg_replace("~(</?\s*\w+)~e", "strtolower('\\1')", $oldString); 
echo $newString,"\n";

<强>输出:

<h1 CLASS='abc'>HGKJHG</h1>
< p ClAsS='AbC123'>HKJGHG</p>

答案 3 :(得分:0)

function change_case_tags($string, $action = 'mb_strtolower')
{
    $string = preg_replace('!<([^> ]+)!e', "$action('\\0')", $string);

    if(strpos($string, '=') !== false)
    {
        return $string = preg_replace('!(?:\s([^\s]+)=([\'"])?(.+)\\2)!Uie', "$action(' \\1').'='.str_replace('\\\\\\', '', '\\2').'\\3'.str_replace('\\\\\\', '', '\\2').''", $string);
    }

    return $string;
}