Pregex匹配问题

时间:2013-08-09 21:54:00

标签: php regex preg-replace

我正在尝试在字符串上使用preg_replace来删除空属性,但是整个字符串都被清除了。

我正在替换的字符串如下所示:

 <input type="text" name="username" id="username" class="required" size="20" maxlength="40" value="" />

以下是我尝试使用的代码:

    $defaults = array(
        'cols' => '60',
        'class' => '',
        'currentValue' => '',
        'default' => '',
        'group' => '',
        'id' => '',
        'maxlength' => '',
        'name' => '',
        'options' => array(),
        'rows' => '00',
        'size' => '60',
        'text' => '',
        'type' => 'text',
        'value' => ''
    );
    $inputHTML = '<input type="text" name="username" id="username" class="required" size="20" maxlength="40" value="" />';
    $inputHTML = preg_replace( '/(' . implode( '|', array_keys( $defaults ) ) , ')=""/g', '', $inputHTML );

正在使用该数组,因为我需要代码的其他部分。

为什么字符串会变回空白的任何想法?

1 个答案:

答案 0 :(得分:1)

您的,来电中有.而不是preg_replace另外,你的正则表达式中有一个"",所以它只会捕获空属性(哦,这正是你想要做的)。

更正后的行:

$inputHTML = preg_replace( '/(' . implode( '|', array_keys( $defaults ) ) . ')=""/', '', $inputHTML );

工作示例:http://ideone.com/sO9K9S