2011-03-01 3 views
1

가 번역 한 후 더 큰 문자열 에서 어떤 임의의 단어를 얻기에 관하여 질문 :임의의 단어를 임의로 섞어서 에코하려면 어떻게합니까?

내 사이트에
<?=__("water, chicken, banana, rice, bread, salt, cucumber, ananas, peach")?> 

현재 출력 :

water, kip, banaan, rijst, zout, komkommer, ananas, perzik 
지금

난 그냥 3 싶어 상상 그 말을 무작위로. 어떻게해야합니까?

내부 단어 부분을 만지지 않는 것이 중요합니다. __(" & ") 부분! __($var)이지만 __("word1, word2, word3") 일 때만 번역기에서 처리 할 수 ​​없습니다.

내가 먼저 문자열이나 배열로 결과를 넣어 가장 상상 내가 무작위로 3를 얻기 위해 여기에서 진행 어떻게

$translated = __("water, chicken, banana, rice, bread, salt, cucumber"); 
echo $translated; 
# shuffle & echo 3 items 

(이 내가 온 얼마나 멀리 웃음하지 마십시오) 단어가 $entireString 외입니까?

갱신

$array = explode(',', $translated); 
    $randomKeys = array_rand($array, 3); 
    $translated = ''; 
    foreach(array_keys($randomKeys) as $key){ 
     $translated .= $array[$key].' '; // use space or comma 
    } 

    echo $translated; 

에코 : 항상 water kip banaan. 그래서 그것은 잘 뒤섞 일 것 같지 않니?

답변

5

사용할 수

$array = explode(',', $str); 
$randomKeys = array_rand($array, 3); 
$str = ''; 
foreach($randomKeys as $key){ 
    $str .= $array[$key].' '; // use space or comma 
} 
+0

'$ randomString = implode (','array_rand ($ array, 3));'이 줄에 오류가 있거나 dreamweaver가 어리석은 응용 프로그램입니까? – Sam

+0

@Sam : 실수 였어,, 내가 바꿨어. – Gaurav

+0

@ Gaurav, 감사합니다! +1하고 어떻게 되풀이합니까? – Sam

1

값을 문자열이 아닌 배열로 저장할 수 있습니까? 너는 단지 ,에 의해 그 (것)들을 폭발 할 수없는 경우에 배열에서 무작위 성분을 얻고 저것을 번역하십시오. 예를 들어

:

$translated = __("water, soup, rice, peanutbutter"); 
$translatedWords = explode(',',$translated); 
shuffle($translatedWords); //Randomize them 

겠습니까 출력 뭔가

Soep, Rijst, Pindakaas, Water 같은 (또한 __ 인 기능에 매우 이상한 이름)

+1

사실'__' 이상한 이름이 아닙니다. '_'는 gettext에 의해 사용되며,이 함수는 유사한 작업을 수행하기 때문에 (이름을 번역하는 것) 적절한 이름이라고 말할 수 있습니다. – Artefact2

+0

사실, 매우 짧습니다 = 좋아해요! – Sam

+0

나는 당신의 해답 +1을 좋아하지만 질문은 전체 문자열이 아닌 3 가지 항목 만 가져 오는 것이었다. 제안서에 선택적인 파악을 어떻게 구현합니까? – Sam

2
function randomstr($str, $num = 3) { 
    $str = explode(',', $str); 
    return implode(',' array_rand($array, $num)); 
} 

지금 :

<?=__(randomstr("water, chicken, banana, rice, bread, salt, cucumber, ananas, peach"))?> 

또는 function __에서 :

function __($string) { 
    $string = randomstr($string); 
    // more your code 
} 
+0

'__ ($ ...)'은 질문에 쓰여진대로 사용할 수 없습니다. inbetween between 미안 해요 (업데이트 된 질문) – Sam

+0

@Sam 두 번째 변형 ('function __ ($ string) {')을 시도 했습니까? – delphist

+0

옙, 그건 내 사이트에서도 작동하지 않습니다. relly는 __ ("...")이 아닌'@ translatedString' 만 감동시킬 수 있습니다; 부품. – Sam

관련 문제