我想通过传递模式来替换中间字符串。我已经通过使用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);
但上面的代码只返回原始字符串。它不会取代新的。
答案 0 :(得分:1)
模式中缺少s-Modifier。此外,您希望匹配文本中间某处的模式。您使用了^,表示行的开头,$表示行的结束。这意味着,整个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);