【问题标题】:Replacing HTML attributes using a regex in PHP在 PHP 中使用正则表达式替换 HTML 属性
【发布时间】:2009-04-23 02:31:54
【问题描述】:

好的,我知道我应该使用 DOM 解析器,但这是为了删除一些代码,作为后续功能的概念证明,所以我想在有限的一组测试代码上快速获得一些功能。

我正在尝试去除块 HTML 的宽度和高度属性,换句话说,替换

width="number" height="number"

使用空白字符串。

我正在尝试编写的函数现在看起来像这样:

function remove_img_dimensions($string,$iphone) {
    $pattern = "width=\"[0-9]*\"";
    $string = preg_replace($pattern, "", $string);

    $pattern = "height=\"[0-9]*\"";
    $string = preg_replace($pattern, "", $string);

    return $string;
}

但这不起作用。

我该如何做?

【问题讨论】:

    标签: php html regex preg-replace


    【解决方案1】:

    PHP 在主要语言中的独特之处在于,虽然正则表达式以字符串文字的形式指定,如 Python、Java 和 C#,但您还必须使用正则表达式分隔符,如 Perl、JavaScript 和 Ruby。

    也请注意,您可以使用单引号而不是双引号来减少对双引号和反斜杠等字符进行转义的需要。这是一个好习惯,因为双引号字符串的转义规则可能令人惊讶。

    最后,您可以通过简单的交替将两个替换组合为一个:

    $pattern = '/(width|height)="[0-9]*"/i';
    

    【讨论】:

      【解决方案2】:

      您的模式需要开始/结束模式字符。像这样:

      $pattern = "/height=\"[0-9]*\"/";
      $string = preg_replace($pattern, "", $string);
      

      “/”是常用字符,但大多数字符都可以使用(“|pattern|”、“#pattern#”等)。

      【讨论】:

        【解决方案3】:

        我认为您缺少需要在字符串中包围正则表达式的括号(可以是 //、|| 或各种其他字符对)。尝试将您的 $pattern 分配更改为这种形式:

        $pattern = "/width=\"[0-9]*\"/";
        

        ...如果您希望能够进行不区分大小写的比较,请在字符串末尾添加一个“i”,因此:

        $pattern = "/width=\"[0-9]*\"/i";
        

        希望这会有所帮助! 大卫

        【讨论】:

          猜你喜欢
          • 2012-05-26
          • 1970-01-01
          • 1970-01-01
          • 2015-05-10
          • 2012-04-10
          • 2014-03-29
          • 2017-07-15
          • 1970-01-01
          • 2010-11-25
          相关资源
          最近更新 更多