คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
อ้างอิง
https://ppantip.com/topic/37261106/
<?
function random_char($input)
{
$r="";
$input_len=strlen($input);
for($i=1;$i<=$input_len;$i++)
{
$num[$i]=substr($input,($i-1),1);
}
for($i=1; $i<=10;$i++){ $ch[$i]=""; }
$fpos=1;
$lpos=8-($input_len-1);
//echo $fpos." : ".$lpos."<br>";
for($i=1;$i<=$input_len;$i++)
{
$num_pos[$i]=rand($fpos,$lpos);
//echo "rand pos =".$num_pos[$i]."<br>";
$fpos=$num_pos[$i]+1;
$lpos=8-($input_len-$i);
$ch[$num_pos[$i]]=$num[$i];
//echo $fpos." : ".$lpos."<br>";
}
for($i=1;$i<=10;$i++)
{
if($ch[$i]=="")
{
$c=rand(1,2);
if($c==1){ $ch[$i]=chr(rand(65,78)); } // A-N
else{ $ch[$i]=chr(rand(80,90)); } // P-Z
}
$r=$r.$ch[$i];
}
return $r;
}
?>
<?
$num=543;
for($i=1;$i<=20;$i++)
{
echo random_char($num)."<br>";
}
?>
VCD5J43KHW
5LUKU43TGY
PCHJ543HRT
NTS5Q43ZUZ
ZCGFF543YZ
5J4RXZ3VUF
IMY543YJRV
MZ5MP43DVZ
5IRNK43SXD
CVUG543ZHF
AIF543CZTR
BQNS543ZDT
FSB5W43TMP
5XVN4L3CZD
IH54J3YQAX
Y54L3JKPSI
5M43SLCWFT
DXHMH543BY
5TREZ43QRZ
5Q4E3ZAAIV
https://ppantip.com/topic/37261106/
<?
function random_char($input)
{
$r="";
$input_len=strlen($input);
for($i=1;$i<=$input_len;$i++)
{
$num[$i]=substr($input,($i-1),1);
}
for($i=1; $i<=10;$i++){ $ch[$i]=""; }
$fpos=1;
$lpos=8-($input_len-1);
//echo $fpos." : ".$lpos."<br>";
for($i=1;$i<=$input_len;$i++)
{
$num_pos[$i]=rand($fpos,$lpos);
//echo "rand pos =".$num_pos[$i]."<br>";
$fpos=$num_pos[$i]+1;
$lpos=8-($input_len-$i);
$ch[$num_pos[$i]]=$num[$i];
//echo $fpos." : ".$lpos."<br>";
}
for($i=1;$i<=10;$i++)
{
if($ch[$i]=="")
{
$c=rand(1,2);
if($c==1){ $ch[$i]=chr(rand(65,78)); } // A-N
else{ $ch[$i]=chr(rand(80,90)); } // P-Z
}
$r=$r.$ch[$i];
}
return $r;
}
?>
<?
$num=543;
for($i=1;$i<=20;$i++)
{
echo random_char($num)."<br>";
}
?>
VCD5J43KHW
5LUKU43TGY
PCHJ543HRT
NTS5Q43ZUZ
ZCGFF543YZ
5J4RXZ3VUF
IMY543YJRV
MZ5MP43DVZ
5IRNK43SXD
CVUG543ZHF
AIF543CZTR
BQNS543ZDT
FSB5W43TMP
5XVN4L3CZD
IH54J3YQAX
Y54L3JKPSI
5M43SLCWFT
DXHMH543BY
5TREZ43QRZ
5Q4E3ZAAIV
แสดงความคิดเห็น
ช่วยด้วยครับ PHP Ramdom ตัวอักษรและตัวเลขโดยไม่เกิน 8 ตัวอักษร แต่ความยากมันอยู่ตรงนี้.....................
1.Random ตัวอักษรและตัวเลขให้สลับที่กันโดยไม่เกิน 8 ตัวอักษร
2.ถ้ารับค่าตัวเลขเข้าไป 2 ตัวก็จะไปแทนที่ตัวอักษร 2 ตัวคือให้มันอยู่ใน 8 ตัว เช่น
N68XOGIW // ถูก
N6XOGIW8 // ถูก
N68XOGIWA // แบบนี้เกิน ไม่ได้ๆ
MNXOGIWA68 แบบนี้เกิน ไม่ได้ๆ
หรือรับ 3 ตัวมันก็จะเข้าไปแทน 3 ตัว
3.ตัวเลขห้ามสลับฝั่งกันเวลารัน คือตั้งว่า 86 ต้องไม่กลับฝั่งกันแต่แยกตำแหน่งกันได้ เช่น
LV6UH8EW //สลับ
RRG6DP8J //สลับ
OYEFUF6Q //สลับ
86OUMPIW //ไม่สลับ
O8UMPI6W //ไม่สลับ
4.ในตัวอักษรต้องไม่มีตัว O เวลา Ramdom ก็คือไม่เอาตัว O
5.ต้องใช้ Function ส่งค่าตัวเลขไปเท่านั้น และใช้ตัวแปรเดียว(1 parameter) ก็คือเช่น
function $pass($input)
{
}
แล้วแทนแบบนี้
&pass(3) // เอา 3 ไปแทนในตัวอักษร 1 ตัว
$pass(43) // เอา 43 ไปแทนในตัวอักษร 2 ตัว
$pass(543) // เอา 543 ไปแทนในตัวอักษร 3 ตัว
6.ถ้ารับเกิน 8 ตัวอักษรจะ error แต่ถ้าไม่ใส่ก็ error เช่นกัน ต้องใส่ในช่วง 1-8 ตัวอักษรเท่านั้น
นี่เป็นโค้ดที่ผมทำ แต่ที่ผมทำรับ 2 parameter แต่โจทย์ต้องการ 1 parameter ครับ ก็เลยต้องทำใหม่
output
จะเห็นว่าสลับกันบ้าง ไม่ขึ้นบ้าง ขึ้นมั่วบ้างครับ
ขอร้องผู้รู้ช่วยผมทีครับ