Я хочу заменить раздел строки, которая начинается с одной строки и заканчивается другой, и я хочу, чтобы раздел между ними также был заменен. Я думаю, что это возможно с помощью regex, но я не могу найти подходящие примеры, демонстрирующие это.
Например:
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 $", но я, похоже, недостаточно понимаю синтаксис регулярного выражения, чтобы создать желаемый эффект,
пожалуйста помоги
Что касается вашего примера, вы можете попробовать как это
$string = 'http://www.website.com/something';
$pattern = '/www(.*)com/';
$replacement = '123xyz';
echo preg_replace($pattern, $replacement, $string);
Большое спасибо как @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;
}
Кажется, это работает очень хорошо. Надеюсь, кто-то найдет это полезным.
$phrase = "http://www.website.com";
$phraseWords = array("www", "com");
$replaceTo = array("123xyz", "something");
$result = str_replace($phraseWords, $replaceTo, $phrase);
echo $result;