$str=':this is a applepie :) ';
วิธีใช้PHP , ลบตัวอักษรตัวแรก:
$str=':this is a applepie :) ';
วิธีใช้PHP , ลบตัวอักษรตัวแรก:
คำตอบ:
ในการลบทุก:
จุดเริ่มต้นของสตริงคุณสามารถใช้ltrim :
$str = '::f:o:';
$str = ltrim($str, ':');
var_dump($str); //=> 'f:o:'
:::::
จะลบทั้งหมด บางครั้งนี่ไม่ใช่พฤติกรรมที่ต้องการ
ltrim('prefixprefix_postfix', 'prefix')
ผลลัพธ์ใน'_postfix';
substr()
ฟังก์ชั่นอาจจะช่วยให้คุณที่นี่:
$str = substr($str, 1);
สตริงถูกทำดัชนีเริ่มต้นจาก 0 และฟังก์ชันนี้พารามิเตอร์ที่สองรับ cutstart ดังนั้นให้ 1 และถ่านแรกที่หายไป
false
ถูกส่งคืน ดังนั้นคุณจะต้องตรวจสอบว่าพวกเขาเท่าเทียมกันหากนั่นไม่ใช่พฤติกรรมที่คุณต้องการ
ใช้substr :
$str = substr($str, 1); // this is a applepie :)
เวลา Exec สำหรับ 3 คำตอบ:
นำจดหมายฉบับแรกออกโดยเปลี่ยนเคส
$str = "hello";
$str[0] = "";
// $str[0] = false;
// $str[0] = null;
// replaced by �, but ok for echo
เวลา Exec สำหรับ 1.000.000 ทดสอบ: 0.39602184295654
วินาที
ลบอักษรตัวแรกด้วย substr ()
$str = "hello";
$str = substr($str, 1);
เวลา Exec สำหรับ 1.000.000 ทดสอบ: 5.153294801712
วินาที
ลบอักษรตัวแรกด้วย ltrim ()
$str = "hello";
$str= ltrim ($str,'h');
เวลา Exec สำหรับ 1.000.000 ทดสอบ: 5.2393000125885
วินาที
ลบอักษรตัวแรกด้วย preg_replace ()
$str = "hello";
$str = preg_replace('/^./', '', $str);
เวลา Exec สำหรับ 1.000.000 ทดสอบ: 6.8543920516968
วินาที
$str[0] = '';
แก้ปัญหาและมันไม่ได้ทำงาน อย่างไรก็ตามถ้าคุณวางแผนที่จะใช้ตัวแปรเพื่อเปรียบเทียบ>
หรือ<
ไม่ได้ผล มันยังคงนับตัวอย่างเช่น + ` $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
var_dump($keyword)
ที่แสดงความยาวอักขระก่อนหน้า .. จากนั้นฉันลองตัดคำหลักแล้วก็ใช้งานได้ดีvar_dump(trim($keyword))
.. หวังว่านี่จะช่วยคนได้ .. :)
นี่คือรหัส
$str = substr($str, 1);
echo $str;
เอาท์พุท:
this is a applepie :)
ในการลบอักขระตัวแรกของสตริงใน PHP
$string = "abcdef";
$new_string = substr($string, 1);
echo $new_string;
Generates: "bcdef"
$str = substr($str, 1);
echo substr('abcdef', 1); // bcdef
บันทึก:
unset($str[0])
จะไม่ทำงานเนื่องจากคุณไม่สามารถยกเลิกการตั้งค่าส่วนหนึ่งของสตริง: -
Fatal error: Cannot unset string offsets
หลังจากการทดสอบเพิ่มเติมฉันไม่แนะนำให้ใช้สิ่งนี้อีก มันทำให้เกิดปัญหาสำหรับฉันเมื่อใช้สตริงที่อัพเดตในเคียวรี MySQL และการเปลี่ยนแปลงเพื่อsubstr
แก้ไขปัญหา ฉันคิดเกี่ยวกับการลบคำตอบนี้ แต่ความคิดเห็นแนะนำว่ามันเร็วกว่าดังนั้นใครบางคนอาจใช้มัน คุณอาจพบว่าการตัดแต่งสตริงที่อัพเดตช่วยแก้ไขปัญหาความยาวของสตริง
บางครั้งคุณไม่ต้องการฟังก์ชั่น:
$str[0] = '';
ตัวอย่างเช่น:
$str = 'AHello';
$str[0] = '';
echo $str; // 'Hello'
วิธีนี้แก้ไขสตริงที่มีอยู่แทนที่จะสร้างอีกสตริง
คำตอบที่ได้รับการยอมรับ:
$str = ltrim($str, ':');
ใช้งานได้ แต่จะลบหลายรายการ:
เมื่อเริ่มต้นมากกว่าหนึ่งครั้ง
$str = substr($str, 1);
จะลบตัวอักษรใด ๆ ตั้งแต่เริ่มต้น
อย่างไรก็ตาม
if ($str[0] === ':')
$str = substr($str, 1);
ทำงานได้อย่างสมบูรณ์แบบ
คุณสามารถใช้ฟังก์ชั่น sbstr ()
$amount = 1; //where $amount the the amount of string you want to delete starting from index 0
$str = substr($str, $amount);
ตัดแต่งการเกิดขึ้นของทุกคำในอาเรย์จากจุดเริ่มต้นและจุดสิ้นสุดของสตริง + ช่องว่างและตัวเลือกเดียวอักขระพิเศษตามการตัดแต่งปกติ ()
<?php
function trim_words($what, $words, $char_list = '') {
if(!is_array($words)) return false;
$char_list .= " \t\n\r\0\x0B"; // default trim chars
$pattern = "(".implode("|", array_map('preg_quote', $words)).")\b";
$str = trim(preg_replace('~'.$pattern.'$~i', '', preg_replace('~^'.$pattern.'~i', '', trim($what, $char_list))), $char_list);
return $str;
}
// for example:
$trim_list = array('AND', 'OR');
$what = ' OR x = 1 AND b = 2 AND ';
print_r(trim_words($what, $trim_list)); // => "x = 1 AND b = 2"
$what = ' ORDER BY x DESC, b ASC, ';
print_r(trim_words($what, $trim_list, ',')); // => "ORDER BY x DESC, b ASC"
?>
รหัสทำงานได้ดีสำหรับฉัน
$str = substr($str ,-(strlen($str)-1));
อาจมีส่วนร่วมกับคำตอบด้วย