php
  • regex
  • preg-replace
  • 2013-06-23 26 views 0 likes 
    0

    我输入的标签是这样的:正则表达式来替换输入标签

    <input style="font-size:12px;width:100%" type="text" value="http://www.google.de/ggg"> 
    

    而且想什么来取代它们。 这是我的尝试:

    $pattern = '/<input style="font-size:12px;width:100%" type="text" value="(.+?)">/'; 
         echo preg_replace($pattern, "", $content) 
    

    我没跟成功。

    我的功能错误是什么?也许正则表达式?

    一个替换字符串内所有输入标签的函数都可以。

    +0

    这可能是好主意,以正则表达式更普遍,即删除'$ content'中的所有输入文本,或者你想用'$ content'做什么? –

    +0

    你是否尝试解析/更改html页面?这个正则表达式看起来很好,在PHP脚本内部的$ content变量上测试... – sinisake

    +0

    @mpapec请看看我的编辑。替换字符串内的所有输入标签都可以。 – user998163

    回答

    0

    将替换所有input标签,不管它们是否以空格开头。 /i忽略大小写和/x忽略空格的regexp因此它的主要目的是更易读的regexp,

    echo preg_replace("/<\s* input [^>]+ >/xi", "", $content); 
    
    0

    您可能需要一些pattern modifiers我假设您有一块文字,所以请在您的图案后添加sU

    +0

    小心使用/ U修饰符,因为如果所有贪婪的量词变得懒惰,懒惰的量词变得贪婪,那么'“(。+?)”>'将匹配第一个双引号,直到该行的最后一个双引号(或带有s修饰符的字符串) –

    0

    使用DOM对象是通常用于处理HTML比正则表达式更好。

    $content = '<input style="font-size:12px;width:100%" type="text" value="asd"/>' ; 
    
    $dom = new DOMDocument ; 
    $dom->loadHTML($content); 
    
    $node = $dom->getElementsByTagName("input")->item(0); 
    $node->setAttribute("value", ""); 
    echo $dom->saveHTML() ; 
    

    这也可以解释为什么:RegEx match open tags except XHTML self-contained tags

    相关问题