[英]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.