วิธีรับอักขระ 5 ตัวแรกจากสตริง


255

วิธีรับอักขระ 5 ตัวแรกจากสตริงโดยใช้ php

$myStr = "HelloWordl";

ผลลัพธ์ควรเป็นเช่นนี้

$result = "Hello";

19
ทำซ้ำ: คุณจะดึงอักขระ 100 ตัวแรกของสตริงใน PHPได้อย่างไร (ใช่ฉันรู้ 100! = 5. )
Annika Backstrom

1
เป็นไปได้ที่ซ้ำกันของรับตัวอักษร n ตัวแรกของสตริง
mega6382

คำตอบ:


549

สำหรับสตริงไบต์เดียว (เช่น US-ASCII, ISO 8859 ตระกูล ฯลฯ ) ให้ใช้substrและสำหรับสตริงแบบหลายไบต์ (เช่น UTF-8, UTF-16 และอื่น ๆ ) ใช้mb_substr:

// singlebyte strings
$result = substr($myStr, 0, 5);
// multibyte strings
$result = mb_substr($myStr, 0, 5);

2
ขอบคุณนี่คือสิ่งที่ฉันต้องการสำหรับ:if(substr($myURL, 0, 4) == "www.") $myURL = preg_replace('/www./', '', $myURL, 1);
shanehoban

1
คุณต้องการเพียง str_replace ('www.', '', $ url); ไม่ต้องตรวจสอบว่ามันมีอยู่
Doug Cassidy

8
@DougCassidy: เกิดอะไรขึ้น$url = "www.subwww.myweirddomainwww.com"? หากไม่มีการตรวจสอบเบื้องต้นการsubstr($url, 0, 4)คืน$urlจะถูกทำลาย !!
Fr0zenFyr

46

การใช้substr():

$result = substr($myStr, 0, 5);

substr("Häagen-Dazs", 0, 5) == "Häag"- ผมทำอะไรผิดหรือเปล่า?
user187291

12
@stereofrog: คุณอาจใช้การเข้ารหัสอักขระแบบหลายไบต์เช่น UTF-8 mb_substrในการใช้งานกรณีที่ว่า
Gumbo

20

อีกทางเลือกหนึ่งในการรับตัวละครเพียงตัวเดียว

$str = 'abcdefghij';

echo $str{5};

7
นี่คือคำตอบที่ถูกสำหรับคำถามที่ผิด downvoted
mickmackusa

เพราะมันต้องมีมากกว่าการคัดลอกวาง?
Robert Pounder

หมายเหตุ: สำหรับชุดอักขระแบบหลายไบต์เช่น UTF-8 จะต้องใช้mb_substr(i, 1)เพื่อรับiตัวอักษร th @RobertPounder - เพราะมันไม่ขยายไปถึงการได้รับมากกว่าหนึ่งตัวอักษร
ToolmakerSteve

1
@ToolmakerSteve ถ้าคุณพูดอย่างนั้น $string = "Häagen-Dazs"; $stringFirstChars = function($amount, $string) { $i=0;$done=false;$return = '';while($done == false) {$return.=$string{$i};if($amount===$i)$done=true;$i++;}return $return;}; var_dump($stringFirstChars(5, $string)); (คัดลอกวางลงใน phptester.net หรือเรา)
Robert Pounder

ใช่ฉันรู้. ฉันไม่ได้ลงคะแนนเป็นการส่วนตัว ฉันเพิ่งสังเกตในสิ่งที่มันไม่ตอบคำถาม สิ่งที่คุณเขียน - นั่นจะเป็นคำตอบที่สมบูรณ์: การแสดงผู้เริ่มต้นว่าใน php หนึ่งขยายจากการรับตัวละครหนึ่งตัวไปสู่ตัวละครหลายตัว มีประโยชน์นอกเหนือจากคำถาม & คำตอบ - ขอบคุณ
ToolmakerSteve

15

คุณสามารถใช้substrฟังก์ชั่นเช่นนี้:

echo substr($myStr, 0, 5);

อาร์กิวเมนต์ที่สองsubstrคือมาจากตำแหน่งที่คุณต้องการเริ่มต้นและอาร์กิวเมนต์ที่สามคือจำนวนอักขระที่คุณต้องการส่งคืน


-4

คุณสามารถรับผลลัพธ์ได้โดยใช้substr () :

สตริงย่อยของไวยากรณ์(สตริงเริ่มต้นความยาว)

ตัวอย่าง

<?php
$myStr = "HelloWordl";
echo substr($myStr,0,5);
?>

ผลผลิต:

 Hello

16
การโพสต์ล่าช้ามากนี้ไม่เพิ่มคุณค่าใด ๆ และเพียงขยายหน้าเพราะทุกสิ่งที่กล่าวได้ถูกกล่าวไปแล้ว (หลายปีก่อน) โปรดอย่าโพสต์คำตอบเว้นแต่คุณจะมีสิ่งที่ไม่ซ้ำใครและมีค่าที่จะเพิ่ม ลงคำตอบนี้เพื่อไม่สนับสนุนการโพสต์ที่ล่าช้าและไร้ประโยชน์
mickmackusa

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