ฉันจะลบเครื่องหมายจุลภาคสุดท้ายออกจากสตริงโดยใช้ PHP ได้อย่างไร


99

ฉันใช้ลูปเพื่อรับค่าจากฐานข้อมูลของฉันและผลลัพธ์ของฉันเป็นดังนี้:

'name', 'name2', 'name3',

และฉันต้องการแบบนี้:

'name', 'name2', 'name3'

ฉันต้องการลบเครื่องหมายจุลภาคหลังค่าสุดท้ายของลูป


11
คุณควรใช้implodeค่าดั้งเดิมของคุณด้วยเครื่องหมายจุลภาคอย่าวนซ้ำและลบสิ่งต่างๆในตอนท้าย
moonwave99

คำตอบ:


220

ใช้rtrimฟังก์ชัน:

rtrim($my_string, ',');

พารามิเตอร์ที่สองระบุอักขระที่จะลบ


27
ตรวจสอบให้แน่ใจว่าคุณไม่มีช่องว่างต่อท้ายหลังเครื่องหมายจุลภาคมิฉะนั้นจะล้มเหลวหรือทำ rtrim (trim ($ my_string), ',')
Foxhoundn

ตอบโจทย์สุด ๆ !
DiChrist

@Foxhoundn ความคิดเห็นของคุณคือผู้ช่วยให้รอด ขอบคุณครับ
Jaydeep Goswami

1
วิธีนี้ใช้ไม่ได้ในการวนซ้ำที่เพิ่มลูกน้ำที่ท้ายเพราะจะลบเครื่องหมายจุลภาคทั้งหมด
LizardKG

25

ลอง:

$string = "'name', 'name2', 'name3',";
$string = rtrim($string,',');

1
ฉันลองแล้ว แต่มันแสดงแบบนี้: 'name''name2''name3' นี่ไม่ใช่สิ่งที่ฉันต้องการ
JoJo

ตามตัวอย่างของคุณคุณต้องใช้ฟังก์ชันนี้กับผลลัพธ์สุดท้ายเท่านั้นไม่ใช่ในแต่ละค่าแยกกัน
Boaz

ฉันใช้ลูปดังนั้นฉันจะรู้ผลลัพธ์สุดท้ายของลูปได้อย่างไร
JoJo

ผลลัพธ์สุดท้ายของลูปถูกเก็บไว้ในตัวแปรใช่ไหม? ดังนั้นใช้การrtrimเรียกกับตัวแปรนั้น หากคุณยังคงประสบปัญหาให้อัปเดตคำถามของคุณด้วยรหัสที่สร้างการวนซ้ำ
Boaz

ฉันชอบคำตอบนี้เป็นพิเศษเพราะหนึ่งในปัญหาเกี่ยวกับฟังก์ชันในตัวของ PHP จำนวนมากคือบางส่วนเป็นโมฆะและบางส่วนมีประเภทการส่งคืน ในกรณีนี้ฉันพยายามเขียนrtrim($string, ',')เมื่อฉันควรจะเขียน$string = rtrim($string, ',');
อเล็กซ์

14

ลองใช้รหัสด้านล่าง:

$my_string = "'name', 'name2', 'name3',";
echo substr(trim($my_string), 0, -1);

ใช้รหัสนี้เพื่อลบอักขระสุดท้ายของสตริง



7

rtrim ฟังก์ชัน

rtrim($my_string,',');

พารามิเตอร์ที่สองระบุว่าจะลบเครื่องหมายจุลภาคจากด้านขวา



4

มันจะส่งผลกระทบต่อสคริปต์ของคุณหากคุณทำงานกับข้อความหลายไบต์ที่คุณใช้ในการย่อย ในกรณีนี้ฉันขอแนะนำอย่างยิ่งให้เปิดใช้งานฟังก์ชัน mb_ * ใน php.ini ของคุณหรือทำสิ่งนี้ini_set("mbstring.func_overload", 2);

$string = "'test1', 'test2', 'test3',";
echo mb_substr($string, 0, -1);



2

จะดีกว่าถ้าใช้ระเบิดเพื่อจุดประสงค์นั้น Implode นั้นง่ายและยอดเยี่ยม:

    $array = ['name1', 'name2', 'name3'];
    $str = implode(', ', $array);

เอาท์พุต:

    name1, name2, name3

ไม่จำเป็นต้องสร้างอาร์เรย์ก่อนจากค่าที่อ่านฐานข้อมูล rtrim & substr มีทั้งโซลูชันที่ถูกต้องและดี
Steve Horvath

คุณพูดถูก แต่ถ้าคุณมีอาร์เรย์นี่เป็นทางออกที่สะดวก
khandaniel

2

คุณสามารถใช้หนึ่งในเทคนิคต่อไปนี้เพื่อลบเครื่องหมายจุลภาคสุดท้าย (,)

โซลูชันที่ 1:

$string = "'name', 'name2', 'name3',";  // this is the full string or text.
$string = chop($string,",");            // remove the last character (,) and store the updated value in $string variable.
echo $string;                           // to print update string.

แนวทางที่ 2:

$string = '10,20,30,';              // this is the full string or text.
$string = rtrim($string,',');
echo $string;                       // to print update string.

แนวทางที่ 3:

 $string = "'name', 'name2', 'name3',";  // this is the full string or text.
 $string = substr($string , 0, -1);
 echo $string;  

0

แนวทางแก้ไขที่จะนำไปใช้ระหว่างลูป:

//1 - Using conditional:

$source = array (1,2,3);
$total = count($source);
    
$str = null;
    
for($i=0; $i <= $total; $i++){ 
        
    if($i < $total) {
        $str .= $i.',';
    }
    else {
        $str .= $i;
    }
}
    
echo $str; //0,1,2,3

//2 - Using rtrim:

$source = array (1,2,3);
$total = count($source);

$str = null;

for($i=0; $i <= $total; $i++){ 
    
        $str .= $i.',';
}

$str = substr($str,0,strlen($str)-1);
echo $str; //0,1,2,3
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.