【问题标题】:PHP preg_replace with multiple token replacementsPHP preg_replace 具有多个令牌替换
【发布时间】:2014-07-12 06:18:59
【问题描述】:

我在 PHP 函数中有以下字符串 ($line)。

$line='<span class="cooktime">25 Mins<span class="value-title" title="PT0H25M"></span></span><span class="preptime">30 Mins<span class="value-title" title="PT0H30M"></span></span>';

我想使用 preg_replace 或任何其他方法将每个跨度集转换为以下内容:

$line='<span class="cooktime">25 Mins<span class="value-title" itemprop="cookTime" content="PT0H25M"></span></span><span class="preptime">30 Mins<span class="value-title" itemprop="prepTime" title="PT0H30M"></span></span>';

基本上我将 itemprop 属性添加到 span 块并将 title 属性重命名为内容。

我如何做到这一点?

感谢您的宝贵时间,JK

【问题讨论】:

    标签: php regex preg-replace


    【解决方案1】:

    可以试试这样的吗? (未在 PHP 中测试,但使用 JavaScript 测试了 RegEx,它似乎可以工作。)

    preg_replace("^(.+)title(.+)$","$1itemprop=\"prepTime\" content$2",$line);
    

    【讨论】:

      【解决方案2】:

      试一试:

      $str = '<span class="cooktime">25 Mins<span class="value-title" title="PT0H25M"></span></span>';
      $str = preg_replace('/" title="/', '" itemprop="prepTime" content="', $str);
      echo $str,"\n";
      

      输出:

      <span class="cooktime">25 Mins<span class="value-title" itemprop="prepTime" content="PT0H25M"></span></span>
      

      【讨论】:

      • 嗨,我刚刚更具体地更新了我的问题。你能检查一下并告诉我吗?
      【解决方案3】:

      好的 - 我找到了答案。感谢 Andrew 和 M42 提供的想法。这里是:

      $line = preg_replace('/\ (.*?)class="preptime"(.*?)<span class="value-title" title(.*?)/i','$1class="preptime"$2<span class="value-title" itemprop="prepTime" content$3',$line);
      $line = preg_replace('/\ (.*?)class="cooktime"(.*?)<span class="value-title" title(.*?)/i','$1class="cooktime"$2<span class="value-title" itemprop="cookTime" content$3',$line);
      

      【讨论】:

        猜你喜欢
        • 2016-08-14
        • 1970-01-01
        • 2015-05-19
        • 1970-01-01
        • 2017-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多