Я ищу быстрый способ заменить текст в строке, которая находится между двумя тегами.
The string contains <!-- Model # Start --> <!-- Model # End --> Tags.
Я просто хочу заменить то, что находится между тегами, я полагаю, что preg_replace()
сделает это, но я не уверен, как заставить его работать.
Чтобы использовать preg_replace, передайте исходную строку и регулярное выражение – результат сопоставления будет возвращен. Существует не так много, чтобы сказать об этом методе, поскольку вам нужно понимать регулярные выражения, чтобы использовать его.
Вот программное решение, возможно, не самый эффективный код, но дает вам представление о том, что он делает.
$tagOne = "["; $tagTwo = "]"; $replacement = "Greg"; $text = "Hello, my name is [NAME]"; $startTagPos = strrpos($text, $tagOne); $endTagPos = strrpos($text, $tagTwo); $tagLength = $endTagPos - $startTagPos + 1; $text = substr_replace($text, $replacement, $startTagPos, $tagLength); echo $text;
Выходы: Привет, меня зовут Грег.
$tagOne = "["; $tagTwo = "]"; $replacement = "Greg"; $text = "Hello, my name is [NAME] endie ho [NAME] \n [NAME]"; $textLength = strlen($text); for ($i; $i< $textLength; $i++) { $startTagPos = strrpos($text, $tagOne); $endTagPos = strrpos($text, $tagTwo); $tagLength = $endTagPos - $startTagPos + 1; if ($startTagPos<>0) $text = substr_replace($text, $replacement, $startTagPos, $tagLength); } echo $text;
Обратите внимание, что оператор if, проверяющий, есть ли тег pos слева, в противном случае для всех тегов textlength – #, ваша начальная позиция 0, в этом случае «H», получит gregs 🙂
Вышеуказанные результаты
Hello, my name is Greg endie ho Greg Greg