簡體   English   中英

通過傳遞特定模式替換中間字符串

[英]Replace middle string by passing specific pattern

我想通過傳遞模式來替換中間字符串。 我已經嘗試過使用pre_replace函數。 但這對我不起作用。

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

但是上面的代碼僅返回原始字符串。 它不會替換為新的。

模式中缺少s-修飾符。 此外,您想將模式匹配到文本中間的某個位置。 您使用^表示行的開始,並使用$表示行的結束。 這意味着,整個String必須匹配。 使用此正則表達式,它將為您工作。

/(Hub :)[^\n]+/is

說明:

(        start Subpattern
Hub      the Word Hub
         followed by a space
:        followed by a Doubledot 
)        end Subpattern -> accessible by $1 or \1
[^\n]+   match one or more Characters except a Linebreak

i        Modifier for caseinsensitive Search
s        Modifier to include Linebreaks

您現在要做的就是也在“替換”中輸出子模式:

$result = preg_replace($pattern, "$1$replacement", $str);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM