<?php
$name = "Peter_Piper";
// %name% is placeholder for $name
$rhyme = "%name% picked a peck of pickled peppers.
A peck of pickled peppers %name% picked.
If %name% picked a peck of pickled peppers,
Where's the peck of pickled peppers %name% picked?";
strpos($rhyme,'%name%');
$split = explode("%name%", $rhyme);
$rhyme = $split[0];
$rhyme .= $name;
$rhyme .= $split[1];
$rhyme .= $name;
$rhyme .= $split[2];
$rhyme .= $name;
$rhyme .= $split[3];
$rhyme .= $name;
$rhyme .= $split[4];
echo $rhyme;
?>
上面的例子准确地描述了我要做的事情。
然而,它只工作,因为我知道多少次"Peter_Piper"出现。因为我不知道%name%会出现多少次(如果有的话),所以需要循环。
<?php
$name = "Peter_Piper";
$rhyme = "%name% picked a peck of pickled peppers.
A peck of pickled peppers %name% picked.
If %name% picked a peck of pickled peppers,
Where's the peck of pickled peppers %name% picked?";
strpos($rhyme,'%name%');
$split = explode("%name%", $rhyme);
foreach ($split as $item) {
echo "$item";
}
?>
现在我有了大部分的押韵,但"Peter_Piper"不见了。我明白为什么彼得派珀不见了。我就是不知道怎么插入名字。
也许使用str_replace?
str_replace("%name%", $name, $rhyme);
也许您正在寻找preg_replace
。
preg_replace('/(%name%)/ug', $name, $rhyme);
或者将%name%
在$rhyme
中的位置改为%1$s
,然后调用
sprintf($rhyme, $name);
常用的是as well
str_replace("%name%", $name, $rhyme);