如何替换以@@
开头并以@@
结尾的单词中的单词?
提前致谢
$str = 'This is test @@test123@@';
如何获得test123
的位置并替换为另一个
答案 0 :(得分:3)
你最好使用正则表达式。
echo $str = preg_replace("~@@(.*?)@@~","This is the replaced text", $str);
因为您希望获取内容。使用preg_match()
和相同的正则表达式。
<?php
$str = 'This is test @@test123@@';
preg_match("~@@(.*?)@@~", $str, $match);
echo $match[1]; //"prints" test123
答案 1 :(得分:2)
并不是说你不一定在这里使用正则表达式,但这里有另一种选择:
鉴于:$str = 'This is test @@test123@@';
$new_str = substr($str, strpos($str, "@@")+2, (strpos($str, "@@", $start))-(strpos($str, "@@")+2));
或者,同样的事情分解了:
$start = strpos($str, "@@")+2;
$end = strpos($str, "@@", $start);
$new_str = substr($str, $start, $end-$start);
输出:
echo $new_str; // test123
答案 2 :(得分:1)
此类型的模板标记替换最好使用preg_replace_callback处理。
$str = 'This is test @@test123@@. This test contains other tags like @@test321@@.';
$rendered = preg_replace_callback(
'|@@(.+?)@@|',
function ($m) {
return tag_lookup($m[1]);
},
$str
);