ฉันจะลบอักขระเฉพาะทั้งหมดที่ส่วนท้ายของสตริงใน PHP ได้อย่างไร


87

ฉันจะลบอักขระสุดท้ายเฉพาะในกรณีที่เป็นช่วงเวลาได้อย่างไร?

$string = "something here.";
$output = 'something here';

คำตอบ:


159
$output = rtrim($string, '.');

(อ้างอิง: rtrim บน PHP.net )


1
@Alix: ใช่ลืมrtrimง่ายกว่าเยอะ ... !
RageZ

2
อาจไม่ต้องการลบ ... (elipsis):
mys

2
@OndrejIvanic: คุณมีสิ่งนั้น หากคุณลบจุดสุดท้ายออก แต่ส่วนที่เหลือยังคงเป็นจุดชื่อคำถามจะไม่สมเหตุสมผลเท่าไหร่ใช่ไหม
Alix Axel

29

การใช้ rtrim แทนที่ทั้งหมด "." ในตอนท้ายไม่ใช่แค่ตัวละครสุดท้าย

$string = "something here..";
echo preg_replace("/\.$/","",$string);

3
ฉันเดาว่า OP ต้องการลบทั้งหมด " ในตอนท้ายมิฉะนั้นจะลบเพียงอันเดียวทำไม? ;)
Tor Valamo

2
ใช่ฉันก็เดาเช่นนั้นเช่นกัน เพียงทำตามคำถามให้ใกล้เคียงที่สุด
ghostdog74

2
สิ่งนี้ดีกว่ามากหลายคนไม่ทราบว่าการใช้character_maskในtrimโดยทั่วไปจะลบอินสแตนซ์ของตัวละครในสตริงทั้งหมด
Brock Hensley

8

ในการลบอักขระสุดท้ายก็ต่อเมื่อมันเป็นช่วงเวลาและไม่ใช้preg_replaceเราเพียงแค่ถือว่าสตริงเป็นอาร์เรย์ของอักขระและลบอักขระสุดท้ายถ้าเป็นจุด

if ($str[strlen($str)-1]==='.')
  $str=substr($str, 0, -1);

2
นี่เป็นคำตอบที่ถูกต้องเนื่องจากคำตอบอื่น ๆ จะลบอักขระต่อท้ายทั้งหมดไม่ใช่แค่ตัวสุดท้าย แต่คุณควรใช้===แทน==การตรวจสอบความเท่าเทียมกันของประเภทด้วย
padawanTony

3

ฉันรู้ว่าคำถามได้รับการแก้ไขแล้ว แต่คำตอบนี้อาจเป็นประโยชน์สำหรับใครบางคน

rtrim() - ตัดช่องว่าง (หรืออักขระอื่น ๆ ) ออกจากท้ายสตริง

ltrim() - ตัดช่องว่าง (หรืออักขระอื่น ๆ ) จากจุดเริ่มต้นของสตริง

trim() - ตัดช่องว่าง (หรืออักขระอื่น ๆ ) จากจุดเริ่มต้นและจุดสิ้นสุดของสตริง

สำหรับการลบอักขระพิเศษออกจากจุดสิ้นสุดของสตริงหรือสตริงมีอักขระพิเศษแบบไดนามิกหรือไม่ในตอนท้ายเราสามารถทำได้โดย regex

preg_replace - ทำการค้นหานิพจน์ทั่วไปและแทนที่

$regex = "/\.$/";             //to replace the single dot at the end
$regex = "/\.+$/";            //to replace multiple dots at the end
$regex = "/[.*?!@#$&-_ ]+$/"; //to replace all special characters (.*?!@#$&-_) from the end

$result = preg_replace($regex, "", $string);

นี่คือตัวอย่างบางส่วนเพื่อทำความเข้าใจเมื่อ$regex = "/[.*?!@#$&-_ ]+$/";ถูกนำไปใช้กับสตริง

$string = "Some text........"; // $resul -> "Some text";
$string = "Some text.????";    // $resul -> "Some text";
$string = "Some text!!!";      // $resul -> "Some text";
$string = "Some text..!???";   // $resul -> "Some text";

ฉันหวังว่ามันจะเป็นประโยชน์สำหรับคุณ

ขอบคุณ :-)


2

ฉันรู้ว่าคำถามนั้นเก่า แต่คำตอบของฉันอาจเป็นประโยชน์สำหรับใครบางคน

$string = "something here..........";

ltrimจะลบจุดนำหน้า ตัวอย่างเช่น:-ltrim($string, ".")

rtrim rtrim($string, ".")จะลบจุดต่อท้าย

ตัดแต่ง trim($string, ".")จะลบจุดต่อท้ายและจุดนำหน้า

คุณสามารถทำได้โดย regex

preg_replaceจะลบออกสามารถใช้เพื่อลบจุด / จุดในตอนท้าย

$regex = "/\.$/"; //to replace single dot at the end
$regex = "/\.+$/"; //to replace multiple dots at the end
preg_replace($regex, "", $string);

ฉันหวังว่ามันจะเป็นประโยชน์สำหรับคุณ


2

อักขระสุดท้ายสามารถลบออกได้หลายวิธีนี่คือบางส่วน

  • rtrim()
$output = rtrim($string, '.');
  • Regular Expression
preg_replace("/\.$/", "", $string);
  • substr() / mb_substr()
echo mb_substr($string, 0, -1);

echo substr(trim($string), 0, -1);
  • substr() ด้วย trim()
echo substr(trim($string), 0, -1);

0

ใช้การรวมกันของstrrposและsubstrเพื่อรับตำแหน่งของอักขระคาบสุดท้ายและลบออกโดยปล่อยให้อักขระอื่น ๆ ยังคงอยู่:

$string = "something here.";

$pos = strrpos($string,'.');
if($pos !== false){
  $output = substr($string,0,$pos);
} else {
  $output = $string;
}

var_dump($output);

// $output = 'something here';

0

คุณสามารถใช้ฟังก์ชัน rtrim ของ php ซึ่งช่วยให้คุณสามารถตัดแต่งข้อมูลที่มีอยู่ในตำแหน่งสุดท้ายได้

ตัวอย่างเช่น :

$trim_variable= rtrim($any_string, '.');

วิธีที่ง่ายและรวดเร็ว !!


-1

ตัวอย่าง:

    $columns = array('col1'=> 'value1', 'col2' => '2', 'col3' => '3', 'col4' => 'value4');

    echo "Total no of elements: ".count($columns);
    echo "<br>";
    echo "----------------------------------------------<br />";

    $keys = "";
    $values = "";
    foreach($columns as $x=>$x_value)
    {
      echo "Key=" . $x . ", Value=" . $x_value;
      $keys = $keys."'".$x."',";
      $values = $values."'".$x_value."',";
      echo "<br>";
    }


    echo "----------------------Before------------------------<br />";

    echo $keys;
    echo "<br />";
    echo $values;
    echo "<br />";

    $keys   = rtrim($keys, ",");
    $values = rtrim($values, ",");
    echo "<br />";

    echo "-----------------------After-----------------------<br />";
    echo $keys;
    echo "<br />";
    echo $values;

?>

เอาท์พุต:

Total no of elements: 4
----------------------------------------------
Key=col1, Value=value1
Key=col2, Value=2
Key=col3, Value=3
Key=col4, Value=value4
----------------------Before------------------------
'col1','col2','col3','col4',
'value1','2','3','value4',

-----------------------After-----------------------
'col1','col2','col3','col4'
'value1','2','3','value4'

สำหรับสิ่งนี้คุณสามารถใช้ join (",", $ array)
Nebulosar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.