ลองแบบนี้บ้างละกันครับ สั้น ๆ ง่าย ๆ ได้คุณภาพ
function spin($s){
preg_match('#\{(.+?)\}#is',$s,$m);
if(empty($m)) return $s;
$t = $m[1];
if(strpos($t,'{')!==false){
$t = substr($t, strrpos($t,'{') + 1);
}
$parts = explode("|", $t);
$s = preg_replace("+\{".preg_quote($t)."\}+is", $parts[array_rand($parts)], $s, 1);
return spin($s);
}
//Example:
echo spin('{This|Here} is {some|a {little|wee} bit of} {example|sample} text.');ปล. Spin ซ้อนกันได้ด้วยน่า ฮ่า ๆ
ช่วยเขียนโค้ดแบบเต็มๆด้วยครับ คือลองรวมกับโค้ดของ จขกท. แล้วมันไม่ออกอะครับ
