doulu2576 2017-07-05 13:07
浏览 25
已采纳

通过传递特定模式替换中间字符串

I want to replace a middle string by passing the pattern. I have tried it by using pre_replace function. But it is not working for me.

   $str = "Lead for Nebhub - Admark
          Name: Punam Kalbande
          Email: kalbandepunam@gmail.com
          Phone Number: 800-703-3209
          Nebhub Partner : Nebhub - Admark
          Address: PO Box 830395 Miami, FL 33173
          Hub : Automotive
          Products: ERP, CRM, HCM, Help Desk, Marketing";
  $pattern = '/^Hub :(.+)Products:$/i';
  $replacement = "Logistics";
  $result = preg_replace($pattern, $replacement, $str);

but the above code is only returning original string. It is not replacing with the new one.

  • 写回答

1条回答 默认 最新

  • douyou1937 2017-07-05 13:11
    关注

    The s-Modifier is missing in your Pattern. Further you want to match the Pattern somewhere in the middle of the Text. You used ^, which indicates the Start of the Line and $ which indicates the End of the Line. That means, the whole String must match. Use this Regex, and it will work for you.

    /(Hub :)[^
    ]+/is
    

    Explanation:

    (        start Subpattern
    Hub      the Word Hub
             followed by a space
    :        followed by a Doubledot 
    )        end Subpattern -> accessible by $1 or \1
    [^
    ]+   match one or more Characters except a Linebreak
    
    i        Modifier for caseinsensitive Search
    s        Modifier to include Linebreaks
    

    What you have to do now is to output the Subpattern in the Replacement too:

    $result = preg_replace($pattern, "$1$replacement", $str);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 扫描枪扫条形码出现问题
  • ¥15 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?