PHP正则表达式从字符串替换为字符串

时间:2014-11-11 06:01:38

标签: php regex string replace

我想替换一个以一个字符串开头并以另一个字符串结尾的字符串部分,并且我希望之间的部分也被替换。我认为这可以使用正则表达式,但我不能'似乎找到了任何体面的例子来表明这一点。

例如:

I have "http://www.website.com" and I want to replace from "www" to "com" with "123xyz".
So"http://www.website.com/something" becomes "http://123xyz/something.

我假设我必须使用preg_replace(),我认为正则表达式应该以" ^ www"开头。并以" com $"结束,但我似乎无法掌握正则表达式的语法,足以创造所需的效果。

请帮助

3 个答案:

答案 0 :(得分:2)

参考您的示例,您可以尝试这样

$string = 'http://www.website.com/something';
$pattern = '/www(.*)com/';

$replacement = '123xyz';
echo preg_replace($pattern, $replacement, $string);

答案 1 :(得分:0)

$phrase       = "http://www.website.com";
$phraseWords  = array("www", "com");
$replaceTo    = array("123xyz", "something");

$result = str_replace($phraseWords, $replaceTo, $phrase);
echo $result;

答案 2 :(得分:0)

非常感谢@CodingAnt和@PHPWeblineindia提供了很好的答案。使用@ CodingAnt的答案(以及我在网上做的更多研究)我写了这个函数:

function replaceBetween(&$target, $from, $to, $with){
  if(strpos($target, $from)===false)return false;
  $regex = "'".$from."(.*?)".$to."'si";
  preg_match_all($regex, $target, $match);
  $match = $match[1];
  foreach($match as $m) $target = str_replace($from.$m.$to, $with, $target);
  return $target;
}

它看起来效果很好。我希望有人觉得这很有用。