【问题标题】:convert ereg_replace to preg_replace in PHP [duplicate]在 PHP 中将 ereg_replace 转换为 preg_replace [重复]
【发布时间】:2012-04-09 18:31:44
【问题描述】:

可能重复:
replace ereg_replace with preg_replace

我已经升级到 PHP 5.3,我需要知道如何将这些标签转换为 Preg_replace。

有什么想法吗?

$html = ereg_replace("<(/)?(font|span|del|ins)[^>]*>", "", $html);

// then run another pass over the html (twice), removing unwanted attributes    
$html = ereg_replace("<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>", "<\\1>", $html);
$html = ereg_replace("<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>", "<\\1>", $html);

【问题讨论】:

    标签: php


    【解决方案1】:

    应该是一样的,你只需要添加分隔符(可能是“/”,“~”或者“@”,你最喜欢没有“)。在替换字符串中你必须使用“$1”而不是“\1”!

    看起来像这样:

    $html = preg_replace("~<(/)?(font|span|del|ins)[^>]*>~","",$html);
    
    $html = preg_replace("~<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>~", "<$1>", $html);
    

    /edit:你可以在分隔符后添加“i”(不带“),因为标签可能用大写字母书写,“i”是代表“不区分大小写”的修饰符。

    $html = preg_replace("~<(/)?(font|span|del|ins)[^>]*>~i","",$html);
    
    $html = preg_replace("~<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>~i", "<$1>", $html);
    

    题外话:在html4中你可能有这样的东西:

    <tagname name="<"> 
    

    这意味着通过过滤没有“”的所有内容,您的正则表达式不会触发这些标签!但它很少见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-26
      • 2013-02-10
      • 2013-07-17
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 2011-09-10
      相关资源
      最近更新 更多