【问题标题】:How to echo randomly a portion of a string?如何随机回显字符串的一部分?
【发布时间】:2011-03-05 21:51:19
【问题描述】:

我已经通过我的翻译功能__(); 成功翻译了一些引用,现在我想随机只回显其中一个引用。此字符串中的所有引号都用一个特殊字符分隔,例如 |

到目前为止,我只有这个。下面应该有什么代码可以解决我的随机回声?

$quotes =
__("IF YOU MAKE EVERYTHING BOLD, NOTHING IS BOLD") . "|" .
__("Quality of design is an indicator of credibility") . "|" .
__("People ignore design, that ignores people");

(一个重要的限制:引号必须用__(""); 完全闭合,以便检查和翻译它们。)__($variable) 不适用于我当前的清理脚本已经买了,所以这些不起作用。

【问题讨论】:

  • 你不能只用array_rand吗?例如_(array_rand(array("STRING ONE", "String two", "String three")));$quotes = array_rand(array(_("STRING ONE", "String two", "String three"))); (授予 array_rand 返回键,但只是描绘点)
  • @Brad,很遗憾没有!在这种特殊情况下。
  • 澄清一下:__ 是 PHP 中的一个函数吗?

标签: php string substring quotes


【解决方案1】:

您已经在每个报价单上分别调用__(),为什么不保存所有额外的翻译并执行以下操作:

$quotes = array('quote1', 'quote2', 'quote3');
$index = array_rand($quotes);
echo __($quotes[$index]);

编辑:为了满足您的其他要求,即对 __() 的调用必须立即包围每个字符串,您可以这样做:

$quotes = array(__('quote1'), __('quote2'), __('quote3'));
$index = array_rand($quotes);
echo $quotes[$index];

这里最大的缺点是您现在正在查找该数组中每个字符串的翻译,即使只打印了一个,但这与您在“一个大字符串”解决方案中遇到的情况相同。

【讨论】:

  • 清理脚本搜索 __("....") 和 __($variable) 不适用于我的翻译脚本!
  • 如果在字符串文字周围立即使用__() 对您很重要,那么数组仍然可以正常工作(尽管您失去了避免翻译您不输出的字符串的附带好处) .
【解决方案2】:

为什么不将它们保存在一个数组中,只翻译实际输出的内容?

$quotes = array(
    "IF YOU MAKE EVERYTHING BOLD, NOTHING IS BOLD",
    "Quality of design is an indicator of credibility",
    "People ignore design, that ignores people",
);
$randomQuote = $quotes[ rand(0, count($quotes)-1)];
echo __($randomQuote);

【讨论】:

  • 在不相关的注释中,我不认为您应该在这里使用逗号:“设计”。
  • 虽然你在那个逗号上是对的,但 __($var) 不起作用!我添加了逗号实际上是为了表明不能将逗号用作分隔符来打开字符串
【解决方案3】:

为什么饼干都在一个字符串中,而不是一个数组?如果是这种情况,您的问题将立即得到解决。就目前而言,拆分 | 并随机索引到创建的数组中以选择随机引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 2018-02-07
    • 2018-04-08
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    相关资源
    最近更新 更多