【问题标题】:regex to replace input tags正则表达式替换输入标签
【发布时间】:2013-06-23 14:32:34
【问题描述】:

我输入了这样的标签:

<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 )

我没有成功。

我的函数有什么错误?也许是正则表达式?

替换字符串中所有输入标签的函数就可以了。

【问题讨论】:

  • 让正则表达式更通用可能是个好主意,即。从$content 中删除所有输入文本,或者您想对$content 做什么?
  • 您是否尝试解析/更改 html 页面?这个正则表达式看起来不错,在 php 脚本中的 $content 变量上测试...
  • @mpapec 请看一下我的编辑。替换字符串中的所有输入标签就可以了。
  • @nevermind ...不是中继,我有一个来自数据库的php字符串,我想为输出做准备......

标签: php regex preg-replace


【解决方案1】:

将替换所有input 标记,无论它们是否以空格开头。 /i 忽略大小写,/x 忽略正则表达式中的空格,因此它的主要目的是更易读的正则表达式,

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

【讨论】:

    【解决方案2】:

    您可能需要一些 pattern modifiers 我假设您有一段文本,因此请尝试在您的模式后添加 sU

    【讨论】:

    • 小心使用 /U 修饰符,因为如果所有贪婪的量词都变得懒惰,那么懒惰的量词就会变得贪婪,然后"(.+?)"&gt; 将匹配第一个双引号,直到该行的最后一个双引号(或带有 s 修饰符的字符串)
    【解决方案3】:

    使用 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

    【讨论】:

      猜你喜欢
      • 2013-11-29
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多