我有一个问题,我找到了一个脚本。
该脚本如下所示:
function spin($var){
$words = explode("{",$var);
foreach ($words as $word)
{
$words = explode("}",$word);
foreach ($words as $word)
{
$words = explode("|",$word);
$word = $words[array_rand($words, 1)];
echo $word." ";
}
}
}
$text = "Digitalpoint.com is {the best forum|a great Forum|a wonderful Forum|a perfect Forum} {123|some other sting}";
spin($text);
我想自定义脚本以返回结果的值。
示例:
$spin = spin($text);
echo $spin;
我试图通过
生成结果变量$output = $output + $word." ";
return $output;
然后
$spin = spin($text);
echo $spin;
但我总是得到结果“0”......任何人都可以为这个问题提出一个聪明的解决方案吗?我期待任何提示/提示,提前谢谢!
答案 0 :(得分:1)
这一位表示$ output是$ output和$ word的总和:
$output = $output + $word." ";
return $output;
因为它们不是数字,所以返回0。
尝试使用以下语句:
$output .= $word . " ";
return $output;
答案 1 :(得分:1)
试试这个。 spun
函数未返回值。我们只是将结果附加到字符串echo
上并返回它,而不是使用$spun
。
function spin($var){
$spun = "";
$words = explode("{",$var);
foreach ($words as $word)
{
$words = explode("}",$word);
foreach ($words as $word)
{
$words = explode("|",$word);
$word = $words[array_rand($words, 1)];
$spun .= $word." ";
}
}
return $spun;
}
答案 2 :(得分:1)
问题不在您提供的代码中,而是在您稍后指定的return语句中。
$output .= $word." ";
return $output;
答案 3 :(得分:0)
我更改了函数,以便您不会复制变量名称
function spin($var){
$words = explode("{",$var);
foreach ($words as $word)
{
$words2 = explode("}",$word);
foreach ($words2 as $word2)
{
$words3 = explode("|",$word2);
$word3 = $words3[array_rand($words3, 1)];
echo $word3." ";
}
}
}
我似乎从文本中得到随机短语。这就是你想要的吗?
答案 4 :(得分:0)
只需preg_replace_callback
:
function spin($text)
{
return preg_replace_callback('/\{(.+?)\}/',
function($matches) {
$values = explode('|', $matches[1]);
return $values[array_rand($values)];
},
$text);
}