ฉันจะรับ 7 อักขระสุดท้ายของสตริง PHP ได้อย่างไร


278

ฉันจะคว้าตัวละคร 7 ตัวสุดท้ายของสตริงด้านล่างได้อย่างไร

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

$dynamicstring = "2490slkj409slk5409els";
$newstring = some_function($dynamicstring);
echo "The new string is: " . $newstring;

ซึ่งจะแสดง:

The new string is: 5409els


8
คำถามระบุว่าเป็น dupไม่ได้จริงๆเช่นเดียวกับคำถามนี้เลย
Asaph

13
เป็นเรื่องน่าขันที่ฉันได้มาที่นี่เมื่อค้นหา Google สำหรับหัวข้อนี้ ถอนหายใจ
LeonardChallis

5
@ Asaph ฉันเรียกสิ่งนี้ว่า คนลองทำอะไรคำถามที่ใกล้ลงสิ่งแรกที่พวกเขาจะทำคือธงว่ามันเป็น dup เพียงเพื่อประโยชน์ของการตั้งค่าสถานะมัน
Twigg

5
มันเป็นเรื่องง่ายขึ้นและเร็วขึ้นในการ google ปัญหาและค้นหาบรรทัดของรหัสในคำตอบใน SO กว่าจะผ่านคู่มือ
Engin Yapici

คำตอบ:


597

ใช้substr()กับจำนวนลบสำหรับอาร์กิวเมนต์ที่ 2

$newstring = substr($dynamicstring, -7);

จากphp docs :

string substr ( string $string , int $start [, int $length ] )

หาก start เป็นค่าลบสตริงที่ส่งคืนจะเริ่มต้นที่อักขระ start'th จากจุดสิ้นสุดของสตริง


แต่ถ้า $ dynamicstring น้อยกว่า 7 ตัวอักษร $ newstring จะว่างเปล่า (อย่างน้อยใน PHP 5.2.6)
Scott Chu

คุณสามารถตรวจสอบกับ strlen ก่อนเพื่อดูว่าจำนวนอักขระมากกว่าหรือเท่ากับ 7
PBwebD


14

ผลลัพธ์ที่ปลอดภัยยิ่งขึ้นสำหรับการทำงานกับรหัสอักขระหลายไบต์ allways ใช้ mb_substr แทน substr ตัวอย่างสำหรับ utf-8:

$str = 'Ne zaman seni düşünsem';
echo substr( $str, -7 ) . ' <strong>is not equal to</strong> ' .
  mb_substr( $str, -7, null, 'UTF-8') ;

11

มันจะดีกว่าที่จะมีการตรวจสอบก่อนที่จะรับสาย

$newstring = substr($dynamicstring, -7);

ถ้าตัวอักษรมากกว่า 7 ส่งคืน 7 ตัวอักษรตัวสุดท้ายจะส่งกลับสตริงที่ระบุ

หรือทำสิ่งนี้หากคุณต้องการส่งคืนข้อความหรือข้อผิดพลาดหากความยาวน้อยกว่า 7

$newstring = (strlen($dynamicstring)>7)?substr($dynamicstring, -7):"message";

เอกสารประกอบย่อย


ฉันคิดว่าจำเป็นต้องใช้ส่วนอื่นเพื่อส่งข้อความกลับ สิ่งที่ต้องการข้อมูลไม่ถูกต้องป้อนหรือ ..
Neri

1
นี่อาจเป็นคำตอบที่ดีที่สุดสิ่งเดียวที่อาจทำให้ดีขึ้นคือการอ้างอิงถึงคู่มือ php
Mark Carpenter Jr

2

เพื่อความง่ายถ้าคุณไม่ต้องการส่งข้อความให้ลองทำสิ่งนี้

$new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );

0

สำหรับ 7 อักขระสุดท้าย

$newstring = substr($dynamicstring, -7);

$ newstring: 5409els

สำหรับอักขระ 7 ตัวแรก

$newstring = substr($dynamicstring, 0, 7);

$ newstring: 2490slk


-1

อักขระ 7 ตัวสุดท้ายของสตริง:

$ rest = substr ("abcdefghijklmnop", -7); // ส่งคืน "jklmnop"

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