ขีดจำกัดความยาวบรรทัด PHP

มันทำงานอย่างไร? - ชิปเอ็นเอฟซี

การให้คำปรึกษาออนไลน์เกี่ยวกับการบำรุงรักษาเว็บไซต์ใน Ulyanovsk: ICQ# 179104682 วิธีการตัดแต่งสาย Cyrillic

โดยใช้ PHP

วันที่เผยแพร่บทความ: 06/01/2014

การสร้างเว็บไซต์ใน Ulyanovsk ด้วยฟังก์ชันการทำงานที่จริงจังและการโต้ตอบกับฐานข้อมูลมักต้องการให้บรรทัดบางบรรทัดไม่เกินปริมาณที่ระบุ อาจจำเป็น เช่น เพื่อจำกัดจำนวนอักขระที่ส่งไปยังเซิร์ฟเวอร์ฐานข้อมูลโดยใช้ฟิลด์อินพุต เพื่อแสดงเพียงส่วนหนึ่งของบรรทัดบนหน้าไซต์ (เช่น เมื่อสร้างประกาศข่าวที่มีความสูงเท่ากันในรายการ) และสำหรับงานอื่นๆอีกมากมาย สิ่งแรกที่โปรแกรมเมอร์มือใหม่เจอคือฟังก์ชันย่อย PHP จริงๆ แล้วมันถูกใช้เพื่อตัดแต่งสตริงและไวยากรณ์ของมันก็ง่ายส่วนย่อย (สตริง, int start [, int length]) โดยที่ int start คืออักขระเริ่มต้นที่จะเริ่มตัดสตริง และพารามิเตอร์ทางเลือก int length คือจำนวนอักขระที่จะตัด อย่างไรก็ตาม อาจดูแปลกสำหรับโปรแกรมเมอร์ที่ไม่มีประสบการณ์หากเขาพยายามใช้มันเพื่อตัดสตริงซีริลลิกใน PHP เนื่องจากสตริงย่อยทำงานกับสตริงซีริลลิก เครื่องหมายคำถามหรือเครื่องหมายคำถามในรูปเพชรอาจปรากฏขึ้นที่ส่วนท้ายของสตริงที่ตัดแต่ง และจำนวนทั้งหมด

ด้วยเหตุผลบางประการ อักขระที่ตัดจะน้อยกว่าที่ระบุไว้ในพารามิเตอร์ int length ถึงสองเท่า ทำไมสิ่งนี้ถึงเกิดขึ้น?

ความจริงก็คืออักขระภาษารัสเซียใน UTF-8 มีขนาด 2 ไบต์และอักขระละตินมีขนาดเพียง 1 ไบต์เท่านั้น ฟังก์ชั่นย่อย PHP จะตัดสตริงเป็นไบต์ ไม่ใช่ตามอักขระ หากสตริงประกอบด้วยอักขระละตินก็ไม่มีอะไรแปลกเกิดขึ้นเนื่องจากจำนวนอักขระตรงกับจำนวนไบต์ และเมื่อทำงานกับตัวอักษรซีริลลิกซึ่งอักขระแต่ละตัวมีขนาด 2 ไบต์พารามิเตอร์ความยาว int สามารถตกไปที่ "ตรงกลาง" ของอักขระได้อย่างง่ายดายและด้วยเหตุนี้เมื่อสิ้นสุดบรรทัดที่ตัดเมื่อส่งออกเราจะ เห็นเครื่องหมายคำถามอาภัพนั้นอยู่ในเพชร

จะตัดส่วนหนึ่งของบรรทัดด้วยอักษรซีริลลิกอย่างถูกต้องได้อย่างไร? วิธีแก้ปัญหานี้ง่ายมากจริงๆ หากต้องการตัดบรรทัดที่มี PHP อย่างถูกต้องอักขระซีริลลิก

คุณต้องใช้ฟังก์ชัน PHP iconv_substr

ไวยากรณ์ของฟังก์ชันนั้นง่าย:

iconv_substr (สตริง, int start [, int length [, ชุดอักขระ]])

$new_string = iconv_substr ($string, 0 , 80 , “UTF-8”);

หมายเลขศูนย์ในตัวอย่างหมายความว่าการนับ 80 อักขระเริ่มต้นจากจุดเริ่มต้นของบรรทัด

การทำงาน สิ่งแรกที่โปรแกรมเมอร์มือใหม่เจอคือฟังก์ชันย่อย PHP จริงๆ แล้วมันถูกใช้เพื่อตัดแต่งสตริงและไวยากรณ์ของมันก็ง่าย($string, $start, $length) โดยที่ $string เป็นตัวแปรที่มีข้อความ $start คืออักขระที่เริ่มนับถอยหลัง (0 ถือเป็นอักขระตัวแรก) และ $length คือจำนวนอักขระของ ข้อความที่เลือก

$text = "ตัวอย่างและข้อความ";

$first = substr($ข้อความ,0,6); // แสดงอักขระ 6 ตัวโดยเริ่มจากตำแหน่ง 0 ตัวแรกสุด
สะท้อน $ก่อน; // จะส่งออก "ตัวอย่าง"

$วินาที = ซับสเตรต($ข้อความ,8,3); // แสดง 3 ตัวอักษร ตั้งแต่วันที่ 8
สะท้อน $ วินาที; // จะพิมพ์ "และ"
หากคุณไม่ได้ระบุพารามิเตอร์ Number of character (หลักที่ 2) ฟังก์ชันจะแสดงอักขระที่เหลือทั้งหมด

$text = "ตัวอย่างและข้อความ";

$สาม = ย่อย($ข้อความ,8); // แสดงอักขระทั้งหมดตั้งแต่วันที่ 8
เสียงสะท้อน $ ที่สาม; // จะพิมพ์ "และข้อความ"

ตัดแต่งข้อความภาษารัสเซียโดยใช้ฟังก์ชัน mb_substr PHP

การทำงาน mb_substrปฏิบัติงานเช่นเดียวกับ สิ่งแรกที่โปรแกรมเมอร์มือใหม่เจอคือฟังก์ชันย่อย PHP จริงๆ แล้วมันถูกใช้เพื่อตัดแต่งสตริงและไวยากรณ์ของมันก็ง่ายแต่ยังสามารถจัดการการเข้ารหัสแบบหลายไบต์ได้ ดังนั้นในกรณีของข้อความภาษารัสเซียจะเป็นประโยชน์สำหรับคุณ mb_substr- ทำงานเหมือนกัน

$text = "ข้อความตัวอย่าง";

$first = mb_substr($text,0,6,"UTF-8"); // แสดงอักขระ 6 ตัวโดยเริ่มจากตำแหน่ง 0 ตัวแรกสุด
// ความสนใจ! ระบุการเข้ารหัส ข้อความต้นฉบับ- ในกรณีนี้คือ utf-8
สะท้อน $ก่อน; // จะแสดง "ตัวอย่าง"

$วินาที = mb_substr($ข้อความ,7,6,"UTF-8"); // แสดง 6 ตัวอักษร ตั้งแต่วันที่ 7
สะท้อน $ วินาที; // จะส่งออก "ข้อความ"
โปรดทราบว่าในกรณีของ Cyrillic (ข้อความภาษารัสเซีย) ควรระบุการเข้ารหัสที่ส่วนท้ายของฟังก์ชันจะดีกว่า ตัวอย่างนี้ใช้ตัวเลือกยอดนิยม - UTF-8

การตัดข้อความจากส่วนท้าย

หากคุณต้องการตัดข้อความจากส่วนท้าย ในการดำเนินการนี้ เราจะระบุจำนวนลบสำหรับตัวแปรเพื่อระบุว่าการเลือกข้อความเริ่มต้นด้วยอักขระตัวใด

$text = "สไปรท์และแฟนต้า";

$first = substr($ข้อความ,-6,5); // แสดง 5 ตัวอักษร เริ่มจากตัวที่ 6 นับจากท้ายสุด
สะท้อน $ก่อน; //จะพิมพ์คำว่า Fant

หลังจากตัดแต่งแล้ว เราก็เพิ่มข้อความด้วย

หลังจากตัดแต่งตัวแปรด้วยข้อความแล้ว ให้เพิ่มข้อความเพิ่มเติมที่ส่วนท้าย

$ตัวอย่าง = " ข้อความข้อความ";

$example = substr($ตัวอย่าง,0,9); // แสดงอักขระ 9 ตัวโดยเริ่มจากตำแหน่ง 0 ตัวแรกสุด
$example .= "เพิ่มเติม...";
สะท้อน $ ตัวอย่าง; // จะแสดงข้อความ "ข้อความเพิ่มเติม..."
ในทางตรงกันข้าม คุณสามารถบันทึกเสียงตั้งแต่ต้น แล้วจึงตัดแต่งข้อความได้

$text = "ลุง";

$example = "จอร์จและไมเคิล";
$example = substr($ตัวอย่าง,0,6); // แสดงอักขระ 6 ตัวโดยเริ่มจากตำแหน่ง 0 ตัวแรกสุด
$ข้อความ .= $ตัวอย่าง;
สะท้อน $ข้อความ; //จะพิมพ์ "ลุงจอร์จ"

ตัดแต่งข้อความเป็นช่องว่างแรก

$text = "สวัสดีชาวโลก!";
echo substr($text, 0, strpos($text, " ")); // พิมพ์ว่า "สวัสดี"

ฟังก์ชัน PHP สำเร็จรูปสำหรับการตัดข้อความด้วย PHP Words

ฟังก์ชั่นตัด($string, $length)(
$string = mb_substr($string, 0, $length,"UTF-8"); // ตัดและทำงานกับการเข้ารหัสทั้งหมดและระบุการเข้ารหัสแหล่งที่มา
$position = mb_strrpos($string, " ", "UTF-8"); // กำหนดตำแหน่งของช่องว่างสุดท้าย ด้วยเหตุนี้เราจึงแยกคำออกจากกัน
$string = mb_substr($string, 0, $position, "UTF-8"); // ตัดตัวแปรตามตำแหน่ง
ส่งคืน $string;
}

$text = "สงครามทางเหนือสิ้นสุดในปี ค.ศ. 1721";
ตัดเสียงสะท้อน($ข้อความ, 17); // จะแสดง "สงครามเหนือ" โดยไม่มีคำว่า "สิ้นสุด"

คุณสามารถตัดคำผ่านอาร์เรย์...

$text = "Microsoft ก่อตั้งโดย Bill Gates ในปี 1975";

$array = explode(" ",$text); // ประมวลผลสตริงเป็นอาร์เรย์
$array = array_slice($array,0,5); // เลือกองค์ประกอบคำ 5 คำแรก
$newtext = ระเบิด(" ",$array); // แปลงอาร์เรย์กลับเป็นสตริง

Echo $newtext;//จะแสดง "Microsoft ก่อตั้งโดย Bill Gates"

เค้าโครงเว็บไซต์แบบปรับเปลี่ยนได้เกี่ยวข้องกับการเปลี่ยนแปลงหน้าเว็บอย่างเพียงพอ ขึ้นอยู่กับอุปกรณ์ที่ผู้เยี่ยมชมใช้ หากเกี่ยวกับองค์ประกอบบล็อกและอินไลน์เกือบทุกอย่างสามารถ "อัตโนมัติ" ได้โดยใช้ CSS และ JavaScript ดังนั้นเมื่อสร้างเนื้อหาและใช้ฐานข้อมูลจะทำได้ยากหากไม่มีฝั่งเซิร์ฟเวอร์

โดยปกติเราจะตัดทอนบรรทัดใน PHP เมื่อใด องค์ประกอบ HTMLเค้าโครงมีการจำกัดจำนวนอักขระที่มองเห็นได้ แต่นี่เป็นงานส่วนตัว

โซลูชันแบบดั้งเดิม

หนึ่งในฟังก์ชันยอดนิยมและใช้บ่อยที่สุดคือ substr() พารามิเตอร์สองหรือสามตัวถูกส่งไป:

    สตริงต้นทาง ตำแหน่งเริ่มต้น ($iPos); ความยาวของสตริงย่อยที่จะตัด ($iLen)

พารามิเตอร์สุดท้ายสามารถละเว้นได้ หากกำหนดพารามิเตอร์เพียงสองตัวเท่านั้น ผลลัพธ์ของ substr() จะเป็นสตริงย่อย ตั้งแต่ตำแหน่งเริ่มต้น ($iPos) จนถึงจุดสิ้นสุดของสตริงต้นฉบับ หากผ่านพารามิเตอร์สามตัวให้ตัดออก สตริง PHPจากตำแหน่งเริ่มต้น ($iPos) ไปจนถึงความยาวที่ระบุ ($iLen)

การเลือกเฉพาะจุดเริ่มต้นของสตริงโดยใช้ฟังก์ชันนี้สามารถทำได้เมื่อพารามิเตอร์แรกเป็นศูนย์ หากตำแหน่งเริ่มต้นเป็นลบ PHP จะถือว่าอักขระที่ตำแหน่ง $iPos จากจุดสิ้นสุดของสตริงเป็นจุดเริ่มต้นที่เราตัดทอนสตริง อักขระในบรรทัดจะมีหมายเลขเริ่มต้นจากศูนย์

ฟังก์ชั่นพิเศษ

PHP พิจารณางาน "ตัดสตริง" (ในความหมายกว้างๆ) ในบริบท: จากทั้งสองฝ่าย ในอดีต นี่คือฟังก์ชัน trim() ซึ่งมีจุดมุ่งหมายเพื่อลบอักขระที่ไม่มีนัยสำคัญ:

    ช่องว่าง; ตัวแบ่งบรรทัด; การคืนรถ; การจัดตาราง; อักขระว่าง

จากปลายทั้งสองของเส้น นี่เป็นฟีเจอร์ที่ได้รับความนิยมมาก โดยเฉพาะอย่างยิ่งเมื่อทำงานกับฐานข้อมูล ซึ่งการเลือกมักจะประกอบด้วยช่องว่างจำนวนมาก การใช้ฟังก์ชัน explode() มักจะส่งผลให้มีอักขระพิเศษที่จุดเริ่มต้นและจุดสิ้นสุดของสตริง

อย่างไรก็ตาม ไม่ใช่นักพัฒนาทุกคนจะใช้ฟังก์ชัน trim() อย่างเต็มประสิทธิภาพ สำหรับงาน "ตัดทอนสตริง" PHP ขอแนะนำให้ใช้พารามิเตอร์ตัวที่สองของฟังก์ชัน ซึ่งคุณสามารถระบุชุดอักขระใดๆ ที่ควรตัดออกจากสตริงต้นฉบับได้


สิ่งสำคัญคือต้องลบอักขระออกจากจุดเริ่มต้นและจุดสิ้นสุดของสตริงต้นฉบับเท่านั้น สิ่งสำคัญคือต้องจัดการมาสก์ของตัวละครที่จะลบและลำดับของงานย่อย

    ขั้นแรก เราตัดสตริง PHP ออกไปครั้งละหนึ่งมาสก์ แล้วอีกอย่างหนึ่ง จากนั้นในวันที่สาม

เป็นผลมาจากลำดับของตัวเลือกสำหรับการใช้ฟังก์ชันเดียว เราจึงตัดข้อความใน PHP ออกตามความจำเป็นในการแก้ปัญหา

วิธีการที่ไม่ได้มาตรฐาน

หากเราไม่พิจารณาช่วงของฟังก์ชันบรรทัดทั้งหมดของภาษา คู่ของฟังก์ชัน explode()/implode() และฟังก์ชัน str_replace() จะช่วยให้คุณสามารถแก้ปัญหาที่ไม่ได้มาตรฐานของข้อมูลบรรทัด "การตัด"


ผลลัพธ์ของการสืบค้น MySQL จะเป็นทางการเสมอในโครงสร้างของข้อมูลที่ส่งคืน และเนื้อหาของฟิลด์ (องค์ประกอบ) ของผลลัพธ์จะถูกกำหนดโดยแหล่งที่มาเสมอ นั่นคือนักพัฒนาที่ออกแบบฐานข้อมูล

นี่เป็นตัวอย่างเฉพาะ แต่จะตอบคำถามได้อย่างแน่นอน: วิธีตัดทอนบรรทัดใน PHP เมื่อมีหลายบรรทัด ฟังก์ชัน trm() เป็นฟังก์ชันเฉพาะ และประวัติของฟังก์ชันถูกกำหนดโดยงานเมื่อมีข้อมูลไม่มากนัก และไม่จำเป็นต้องตัดสิ่งอื่นใดนอกจากอักขระที่ไม่มีนัยสำคัญ

ปัจจุบัน ข้อมูลถูกเผยแพร่ในปริมาณมาก และการตัดทีละบรรทัดไม่เพียงแต่ไม่จำเป็น แต่ยังไม่มีเหตุผลอีกด้วย

การแยกออกเป็นส่วนประกอบก็เป็นทางเลือกเช่นกัน เช่น การตัดสตริงออก PHP จะระเบิด () โดยอัตโนมัติเพื่อตัดอันหนึ่ง ข้อความขนาดใหญ่สำหรับบรรทัดที่จำเป็นมากมาย ด้วยการใช้ฟังก์ชัน str_replace() − นั่นคือการแทนที่อักขระตัวหนึ่งด้วยตัวอื่น − คุณจะได้ผลลัพธ์ที่คล้ายกัน


ประการแรก พลวัตและปริมาณของข้อมูลที่จำเป็นต้องประมวลผลถือเป็นวิธีแก้ปัญหาที่เพียงพอ และไม่ใช่การใช้ฟังก์ชันพิเศษเพียงฟังก์ชันเดียว

ไซต์ยอมรับการเปลี่ยนแปลงที่เพียงพอในหน้าต่างๆ ขึ้นอยู่กับอุปกรณ์ที่ผู้เยี่ยมชมใช้ หากเกี่ยวกับองค์ประกอบบล็อกและอินไลน์เกือบทุกอย่างสามารถ "อัตโนมัติ" ได้โดยใช้ CSS และ JavaScript ดังนั้นเมื่อสร้างเนื้อหาและใช้ฐานข้อมูลจะทำได้ยากหากไม่มีฝั่งเซิร์ฟเวอร์

โดยปกติเราจะตัดทอนบรรทัดใน PHP เมื่อองค์ประกอบเค้าโครง HTML มีการจำกัดจำนวนอักขระที่มองเห็นได้ แต่นี่เป็นงานส่วนตัว

โซลูชันแบบดั้งเดิม

หนึ่งในฟังก์ชันยอดนิยมและใช้บ่อยที่สุดคือ substr() พารามิเตอร์สองหรือสามตัวถูกส่งไป:

  • สตริงต้นทาง
  • ตำแหน่งเริ่มต้น ($iPos);
  • ความยาวของสตริงย่อยที่จะตัด ($iLen)

พารามิเตอร์สุดท้ายสามารถละเว้นได้ หากกำหนดพารามิเตอร์เพียงสองตัวเท่านั้น ผลลัพธ์ของ substr() จะเป็นสตริงย่อย ตั้งแต่ตำแหน่งเริ่มต้น ($iPos) จนถึงจุดสิ้นสุดของสตริงต้นฉบับ หากผ่านพารามิเตอร์สามตัว เราจะตัดสตริง PHP จากตำแหน่งเริ่มต้น ($iPos) ให้เป็นความยาวที่ระบุ ($iLen)

การเลือกเฉพาะจุดเริ่มต้นของสตริงโดยใช้ฟังก์ชันนี้สามารถทำได้เมื่อพารามิเตอร์แรกเป็นศูนย์ หากตำแหน่งเริ่มต้นเป็นลบ PHP จะถือว่าอักขระที่ตำแหน่ง $iPos จากจุดสิ้นสุดของสตริงเป็นจุดเริ่มต้นที่เราตัดทอนสตริง อักขระในบรรทัดจะมีหมายเลขเริ่มต้นจากศูนย์

ฟังก์ชั่นพิเศษ

PHP พิจารณางาน "ตัดสตริง" (ในความหมายกว้างๆ) ในบริบท: จากทั้งสองฝ่าย ในอดีต นี่คือฟังก์ชัน trim() ซึ่งมีจุดมุ่งหมายเพื่อลบอักขระที่ไม่มีนัยสำคัญ:

  • ช่องว่าง;
  • ตัวแบ่งบรรทัด;
  • การคืนรถ;
  • การจัดตาราง;
  • อักขระว่าง

จากปลายทั้งสองของเส้น นี่เป็นฟีเจอร์ที่ได้รับความนิยมมาก โดยเฉพาะอย่างยิ่งเมื่อทำงานกับฐานข้อมูล ซึ่งการเลือกมักจะประกอบด้วยช่องว่างจำนวนมาก การใช้ฟังก์ชัน explode() มักจะส่งผลให้มีอักขระพิเศษที่จุดเริ่มต้นและจุดสิ้นสุดของสตริง

อย่างไรก็ตาม ไม่ใช่นักพัฒนาทุกคนจะใช้ฟังก์ชัน trim() อย่างเต็มประสิทธิภาพ สำหรับงาน "ตัดทอนสตริง" PHP ขอแนะนำให้ใช้พารามิเตอร์ตัวที่สองของฟังก์ชัน ซึ่งคุณสามารถระบุชุดอักขระใดๆ ที่ควรตัดออกจากสตริงต้นฉบับได้

สิ่งสำคัญคือต้องลบอักขระออกจากจุดเริ่มต้นและจุดสิ้นสุดของสตริงต้นฉบับเท่านั้น สิ่งสำคัญคือต้องจัดการมาสก์ของตัวละครที่จะลบและลำดับของงานย่อย

  • ขั้นแรก เราตัดสตริง PHP ออกไปครั้งละหนึ่งมาสก์
  • แล้วอีกอย่างหนึ่ง
  • จากนั้นในวันที่สาม

เป็นผลมาจากลำดับของตัวเลือกสำหรับการใช้ฟังก์ชันเดียว เราจึงตัดข้อความใน PHP ออกตามความจำเป็นในการแก้ปัญหา

วิธีการที่ไม่ได้มาตรฐาน

หากเราไม่พิจารณาช่วงของฟังก์ชันบรรทัดทั้งหมดของภาษา คู่ของฟังก์ชัน explode()/implode() และฟังก์ชัน str_replace() จะช่วยให้คุณสามารถแก้ปัญหาที่ไม่ได้มาตรฐานของข้อมูลบรรทัด "การตัด"

ผลลัพธ์ของการสืบค้น MySQL จะเป็นทางการเสมอในโครงสร้างของข้อมูลที่ส่งคืน และเนื้อหาของฟิลด์ (องค์ประกอบ) ของผลลัพธ์จะถูกกำหนดโดยแหล่งที่มาเสมอ นั่นคือนักพัฒนาที่ออกแบบฐานข้อมูล

นี่เป็นตัวอย่างเฉพาะ แต่จะตอบคำถามได้อย่างแน่นอน: วิธีตัดทอนบรรทัดใน PHP เมื่อมีหลายบรรทัด ฟังก์ชัน trm() เป็นฟังก์ชันเฉพาะ และประวัติของฟังก์ชันถูกกำหนดโดยงานเมื่อมีข้อมูลไม่มากนัก และไม่จำเป็นต้องตัดสิ่งอื่นใดนอกจากอักขระที่ไม่มีนัยสำคัญ

ปัจจุบัน ข้อมูลถูกเผยแพร่ในปริมาณมาก และการตัดทีละบรรทัดไม่เพียงแต่ไม่จำเป็น แต่ยังไม่มีเหตุผลอีกด้วย

การแยกออกเป็นส่วนประกอบก็เป็นทางเลือกเช่นกัน เช่น การตัดสตริงออก PHP จะใช้ explode() โดยอัตโนมัติเพื่อตัดข้อความขนาดใหญ่หนึ่งบรรทัดให้เป็นหลายบรรทัดที่ต้องการ ด้วยการใช้ฟังก์ชัน str_replace() − นั่นคือการแทนที่อักขระตัวหนึ่งด้วยตัวอื่น − คุณจะได้ผลลัพธ์ที่คล้ายกัน

ประการแรก พลวัตและปริมาณของข้อมูลที่จำเป็นต้องประมวลผลถือเป็นวิธีแก้ปัญหาที่เพียงพอ และไม่ใช่การใช้ฟังก์ชันพิเศษเพียงฟังก์ชันเดียว



2024 wisemotors.ru. วิธีนี้ทำงานอย่างไร. เหล็ก. การทำเหมืองแร่ สกุลเงินดิจิทัล