ฟังก์ชัน sscanf() ของ PHP

ตัวอย่าง

ตัวอย่างการแปลงซตริง:

<?php
$str = "age:30 weight:60kg";
sscanf($str,"age:%d weight:%dkg",$age,$weight);
// แสดงรูปแบบและค่า
var_dump($age,$weight);
?>

รันตัวอย่าง

การเรียกใช้และความหมาย

ฟังก์ชัน sscanf() นับและประมวลค่าที่มาจากซตริง ฟังก์ชัน sscanf() นับและประมวลค่าที่มาจากซตริงตามรูปแบบที่กำหนด

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

ฟังก์ชันที่เกี่ยวข้อง:

  • printf() - ออกทางซตริงที่เป็นรูปแบบแบบฟอร์แมต
  • sprintf() - ขึ้นรูปแบบแบบฟอร์แมตและเข้าสู่ตัวแปร

รูปแบบ

sscanf(string,format,arg1,arg2,arg++)
ตัวแปร คำอธิบาย
string จำเป็นต้องมีค่า。กำหนดซตริงที่ต้องอ่าน
format

จำเป็นต้องมีค่า。กำหนดรูปแบบที่ต้องใช้

ค่ารูปแบบที่เป็นไปได้:

  • %% - กลับคืนตัวเซ็นต์เซนท์ %
  • %c - อักษรที่เท่ากับมูลค่า ASCII
  • %d - ตัวเลขสิบทศนิยมที่มีสัญญาณบวกหรือลบ (ลบ 0 และ บวก)
  • %e - การนับเลขเชิงวิทยาศาสตร์ในแบบตัวเล็ก (เช่น 1.2e+2)
  • 鉮ัวเลขสิบทศนิยมที่ไม่มีสัญญาณบวกหรือลบ (มากกว่าหรือเท่า 0)
  • %f - ตัวเลขลึกศูนย์
  • %o - ตัวเลขแปดทศนิยม
  • %s - ซตริง
  • 0x - ตัวเลขสิบหก (อักษรเล็ก)
  • %X - ตัวเลขสิบหก (ตัวอักษรใหญ่)

รูปแบบที่เพิ่มเติม. จำเป็นต้องทำการวางในระหว่าง % และตัวอักษร (เช่น %.2f):

  • + (ใส่ + หรือ - ก่อนเลขเพื่อกำหนดสัญญาณของเลข ต้นแบบเฉพาะเลขลบเท่านั้น ลูกเลขไม่มีสัญญาณ)
  • " (กำหนดสิ่งที่ใช้เป็นตัวกรอง ต้นแบบคือช่องว่าง มันต้องใช้ร่วมกับกำหนดความกว้าง)
  • - (ด้านซ้ายของตัวเลขค่าที่เป็นค่าตั้งต้น)
  • .[0-9] (กำหนดความกว้างของตัวเลขค่าที่เป็นค่าตั้งต้น)
  • .[0-9] (กำหนดจำนวนตำแหน่งทศนิยมหรือความยาวของตัวอักษรสูงสุด)

หมายเหตุ:ถ้าใช้รูปแบบที่กล่าวข้างต้นหลายรูปแบบ ต้องใช้ตามลำดับที่กล่าวข้างต้น

arg1 ตัวเลือกได้. ตัวแปรที่เก็บข้อมูลในตัวแปรที่หนึ่ง
arg2 ตัวเลือกได้. ตัวแปรที่เก็บข้อมูลในตัวแปรที่สอง
arg++ ตัวเลือกได้. ตัวแปรที่เก็บข้อมูลในตัวแปรที่สามและสี่ ตามไป

รายละเอียดเทคนิค

ค่าที่กลับมา ถ้าส่งค่าเพียงสองตัวเลขแก่ฟังก์ชันนี้ เช่นเดียวกับส่งค่าเพิ่มเติม ข้อมูลที่นำมาทำนายจะกลับมาในรูปแบบของแถว หากส่งค่าเพิ่มเติม ข้อมูลที่นำมาทำนายจะถูกเก็บไว้ในตัวแปรที่ส่งมา เมื่อจำนวนของเครื่องหมายแบ่งของมากกว่าจำนวนตัวแปรที่มี จะเกิดข้อผิดพลาด อย่างไรก็ตาม ถ้าจำนวนของเครื่องหมายแบ่งของน้อยกว่าจำนวนตัวแปรที่มี ตัวแปรที่เหลืออยู่จะมีค่า NULL
เวอร์ชัน PHP: 4.0.1+

ตัวอย่างเพิ่มเติม

ตัวอย่าง 1

ใช้ค่ารูปแบบ %s、%d และ %c:

<?php
$str = "If you divide 4 by 2 you'll get 2";
$format = sscanf($str,"%s %s %s %d %s %d %s %s %c");
print_r($format);
?>

รันตัวอย่าง