我正在寻找一种快速方法来替换两个标签之间的字符串中的文本。
The string contains <!-- Model # Start --> <!-- Model # End --> Tags.
我只想替换标签之间的内容,我相信preg_replace()
会这样做,但我不知道如何让它发挥作用。
答案 0 :(得分:3)
要使用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;
输出:您好,我的名字是格雷格。
答案 1 :(得分:0)
$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