 |
เกี่ยวกับ substr ครับ ex. 000005612458 , 000000000012, 00000000111,000000000001 ฯลฯ |
|
 |
|
|
 |
 |
|
Code (PHP)
$x ="000005612458 , 000000000012, 00000000111,000000000001";
$x =preg_replace('/(\s)|( )/','',$x); // ก่อนอื่นต้องตัด ช่องว่างออกก่อน
$split= preg_split('/,/',$x); // ตัดคำถึง , แล้วเก็บเข้า array $split
foreach($split as $sp){
echo $sp."<br>";
}
|
 |
 |
 |
 |
Date :
2009-12-03 14:51:01 |
By :
xbeginner01 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
<?php
$text="ex. 000005612458 , 000000000012, 00000000111,000000000001 ";
for($i=0;$i<=strlen($text);$i++){
$st=substr($text,$i,1);
if($st!=0){
print $st;
}
}
?>
ใช่แบบนี้มัย
|
 |
 |
 |
 |
Date :
2009-12-03 14:57:51 |
By :
yui |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณ คุณ xbeginner01 นะครับ
ผมอธิบายไม่ชัดเจนอ่ะครับ
คือตัวเลขที่ให้ไปมันเป็นคนละชุดกัน ไม่ได้อยู่ในกลุ่มเดียวกันครับ
ผมอยากแค่จะแยกเลขออกเท่านั้นครับ
000005612458 เหลือเพียง 5612458
000000000012 เหลือเพียง 12
|
 |
 |
 |
 |
Date :
2009-12-03 15:00:55 |
By :
-v- |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$x ="000005612458 , 000000000012, 00000000111,000000000001";
$x =preg_replace('/(\s)|( )/','',$x); // ก่อนอื่นต้องตัด ช่องว่างออกก่อน
$split= preg_split('/,/',$x); // ตัดคำถึง , แล้วเก็บเข้า array $split
foreach($split as $sp){
echo (int)$sp."<br>"; // ใส่ (int) ไปครับ เดียว 0 ก็หายไปเอง
}
กรณีที่ไปคำนวณต่อไม่จำเป็นต้องใส่ int หรอกน่ะ เพราะเดียว 0 ก็หายไปเอง
|
 |
 |
 |
 |
Date :
2009-12-03 15:28:15 |
By :
xbeginner01 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$text = "000000000012";
$text1 = "000005612458";
$num = str_replace("0","",$text);
$num1 = str_replace("0","",$text1);
echo '$text = '.$num.'<br>';
echo '$text1 = '.$num1.'<br>';
//ผลลัพธ์
//$text = 12
//$text1 = 5612458
|
 |
 |
 |
 |
Date :
2009-12-03 15:35:14 |
By :
extenser |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าค่าของคุณไม่เกินค่าของ integer ก็สามารถเอา (int)ไว้หน้าตัวแปรได้เลยคับ
แต่ถ้าค่าของคุณที่ตัดออกมาเกินค่า integer ก็ใช้ไม่ได้
อีกทางเลือกคับเขียนเป็นฟังก์ชันขึ้นมาตัดตัวอักษรที่ไม่ต้องการออกไป
Code (PHP)
//$string ก็เป็นข้อความที่เป็น 0000000123
//$split เป็น "0" คือตัวที่คุณอยากเอาออกไป
//ตัวอย่าง echo trimstr($numberstring,"0");
function trimstr($string, $split)
{
$len = strlen($string);
for($i=0;$i<=$len;$i++)
{
if($split != $string[$i]) break;
}
return substr($string,$i);
}
แต่ถ้าค่าของคุณที่เอามาเป็น "0000123,0001234,...." ไรแบบนี้ ในฟังก์ชันคุณก็ split แยกออกจากกันก่อนคับ
อันนี้เป็นแค่แนวทาง
|
 |
 |
 |
 |
Date :
2009-12-03 15:45:20 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
00001200001234
มันก็จะได้ 121234 ก็เป็นคำตอบที่ผิดใช่มะครับ
1200001234 คำตอบที่ถูกต้อง
ขอบพระคุณทุกๆ ท่านมากนะครับ ขอรบกวนอีกซักหน่อยนะครับ
|
 |
 |
 |
 |
Date :
2009-12-03 16:01:38 |
By :
-v-v- |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$text = "00001200001234";
$flag = true;
$position = 0;
while($flag)
{
if(substr($text,$position,1) == "0" && substr($text,$position+1,1) != "0")
{
$position++;
$flag = false;
}
else
{
$position++;
$flag = true;
}
}
echo '$newNumber = '.$newNumber = substr($text,$position,strlen($text));
//ผลลัพธ์ $newNumber = 1200001234
จริงๆ ถ้าตัวเลขใน string เป็นจำนวนเต็มแล้วมีค่าเกิน integer ก็สามารถใช้คำสั่งแปลงค่าเป็น float เลยก็ได้ครับ
ซึ่งมันจะตัด 0 ข้างหน้าออกให้หมดแล้วไม่มีจุดทศนิยมต่อท้ายด้วย
Code (PHP)
$text = "00001200001234";
echo '$newFloat = '.(float)$newFloat = $text;
//ผลลัพธ์ $newFloat = 1200001234 เช่นกัน
|
 |
 |
 |
 |
Date :
2009-12-03 17:10:45 |
By :
extenser |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบพระคุณทุกๆ ท่านอย่างสูง ครับ
|
 |
 |
 |
 |
Date :
2009-12-04 08:29:27 |
By :
bb |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|