ไวยากรณ์นิพจน์ทั่วไป

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

สิ่งนี้จะถูกละเลยโดยล่าม และจะถูกส่งไปตามปกติที่เว็บเซิร์ฟเวอร์เป็นอันดับแรก ซึ่งจะส่งให้กับเบราว์เซอร์ตามลำดับ

ล่ามก็จะถูกละเลยเช่นกันและจะถูกส่งต่อไปยังเว็บเซิร์ฟเวอร์ตามที่เป็นอยู่

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

PHP ยังอนุญาตให้ใช้แท็กเปิดแบบสั้น

อักขระช่องว่าง

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

ตัวอย่างด้านล่างคือโค้ด PHP ที่ใช้ช่องว่าง:

โค้ดตัวอย่างสามารถเขียนในบรรทัดเดียวโดยไม่ต้องใช้ช่องว่าง แต่โค้ดดังกล่าวจะอ่านได้น้อยกว่า:

อัปเดตล่าสุดเมื่อ 27 พฤศจิกายน 2019 07:10:59 น. (UTC/GMT +8 ชั่วโมง)

ไวยากรณ์การเปิดและปิดแท็ก PHP

มีแท็กเปิดและปิดที่แตกต่างกันสี่คู่ซึ่งสามารถใช้ใน php ได้ นี่คือรายการแท็ก

  • ไวยากรณ์เริ่มต้น
  • แท็กเปิดแบบสั้น
  • ละเว้นแท็กปิด PHP ที่ส่วนท้ายของไฟล์

ไวยากรณ์เริ่มต้น

ไวยากรณ์เริ่มต้นเริ่มต้นด้วย "".

ตัวอย่าง:

แท็กเปิดแบบสั้น

แท็กแบบสั้นเริ่มต้นด้วย "" แท็กรูปแบบสั้นจะใช้ได้เฉพาะเมื่อเปิดใช้งานในไฟล์การกำหนดค่า php.ini บนเซิร์ฟเวอร์เท่านั้น

ตัวอย่าง:

ละเว้นแท็กปิด PHP ที่ส่วนท้ายของไฟล์

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

ตัวอย่าง:

การแยกคำสั่ง PHP

ใน PHP คำสั่งจะลงท้ายด้วยเครื่องหมายอัฒภาค (;) เช่น C หรือ Perl แท็กปิดของบล็อกของโค้ด PHP จะแสดงเครื่องหมายอัฒภาคโดยอัตโนมัติ โดยไม่จำเป็นต้องมีเครื่องหมายอัฒภาคเพื่อยุติบรรทัดสุดท้ายของบล็อก PHP

กฎเกณฑ์สำหรับการแยกข้อความ

  • อัฒภาค
  • และ/หรือ
  • แท็กปิด PHP

รหัสที่ถูกต้อง

ในตัวอย่างข้างต้น มีทั้งอัฒภาค (;) และแท็กปิด PHP ปรากฏ

ในตัวอย่างข้างต้น ไม่มีเครื่องหมายอัฒภาค (;) หลังคำสั่งสุดท้าย แต่มีแท็กปิด PHP ปรากฏอยู่

ในตัวอย่างข้างต้น มีเครื่องหมายอัฒภาค (;) ในคำสั่งสุดท้าย แต่ไม่มีแท็กปิด PHP

ความไวของตัวพิมพ์ PHP

ใน PHP ฟังก์ชัน คลาส คีย์เวิร์ดภาษาหลักที่ผู้ใช้กำหนด (เช่น if, else, while, echo ฯลฯ) คำนึงถึงขนาดตัวพิมพ์ ดังนั้นคำสั่ง echo ทั้งสามในตัวอย่างต่อไปนี้จึงมีค่าเท่ากัน

ตัวอย่าง - 1

"); ECHO("เรากำลังเรียนรู้ความละเอียดอ่อนของตัวพิมพ์ PHP
"); EcHo("เรากำลังเรียนรู้ความละเอียดอ่อนของตัวพิมพ์ PHP
"); ?>

เรากำลังเรียนรู้ความไวของตัวพิมพ์ใหญ่ของ PHP เรากำลังเรียนรู้ความไวของตัวพิมพ์ของ PHP เรากำลังเรียนรู้ความไวของตัวพิมพ์ของ PHP

ในทางกลับกัน ตัวแปรทั้งหมดจะคำนึงถึงขนาดตัวพิมพ์

ลองพิจารณาตัวอย่างต่อไปนี้ เฉพาะคำสั่งแรกเท่านั้นที่แสดงค่าเป็น $amount เนื่องจาก $amount, $AMOUNT, $amoUNT เป็นตัวแปรที่แตกต่างกันสามตัว

ตัวอย่าง - 2

"); echo("จำนวนเงินคือ: $AMOUNT
"); echo("จำนวนคือ: $amoUNT
"); ?>

จำนวนเงินคือ: 200 จำนวนเงินคือ: จำนวนเงินคือ:

ความไวของช่องว่าง PHP

โดยทั่วไป ช่องว่างจะไม่ปรากฏบนหน้าจอ รวมถึงช่องว่าง แท็บ และอักขระที่ท้ายบรรทัด เช่น การคืนรถ ในช่องว่างของ PHP ไม่สำคัญในการเขียนโค้ด คุณสามารถแบ่งคำสั่งบรรทัดเดียวเป็นจำนวนบรรทัดหรือจำนวนคำสั่งแยกกันได้ในบรรทัดเดียว

สองตัวอย่างต่อไปนี้จะเหมือนกัน:

ตัวอย่าง:

"; echo "คลาสของเขาคือ: $class และ Roll No. คือ $roll_no"; ) Student_info("David Rayy", "V", 12) ?>

ตัวอย่าง: ความไม่รู้สึกช่องว่างขั้นสูง

"; echo "คลาสของเขาคือ: $class และ Roll No. คือ $roll_no"; ) Student_info("David Rayy", "V", 12) ?>

ชื่อนักเรียนคือ: David Rayy ชั้นเรียนของเขาคือ: V และ Roll No. คือ 12

ตัวอย่าง: ความไวของช่องว่างพร้อมแท็บและช่องว่าง

ในตัวอย่างช่องว่างและแท็บต่อไปนี้ใช้ในการดำเนินการตัวเลข แต่ในทั้งสองกรณี $xyz จะส่งกลับค่าเดียวกัน

"; // แท็บและช่องว่าง $xyz = 11 + 12; echo $xyz; ?>

PHP: ความคิดเห็นบรรทัดเดียวและหลายบรรทัด

แสดงความคิดเห็นบรรทัดเดียว

PHP รองรับการแสดงความคิดเห็นสองวิธีต่อไปนี้

#นี่เป็นความคิดเห็นบรรทัดเดียว

//นี่เป็นอีกวิธีหนึ่งในการแสดงความคิดเห็นบรรทัดเดียว

ตัวอย่าง:

แสดงความคิดเห็นหลายบรรทัด

PHP รองรับ "C" ความคิดเห็นสไตล์ ความคิดเห็นเริ่มต้นด้วยคู่อักขระ /* และสิ้นสุดด้วยคู่อักขระ */

/* นี่เป็นการทดสอบความคิดเห็นหลายรายการ
และบรรทัดเหล่านี้จะถูกละเว้น
ณ เวลาที่ดำเนินการ */

ตัวอย่าง:

ความคิดเห็นหลายบรรทัดไม่สามารถซ้อนกันได้

สคริปต์ PHP ตัวแรก

นี่คือสคริปต์ PHP ตัวแรกที่จะแสดง "Hello World..." ในเว็บเบราว์เซอร์

<?php echo "สวัสดีชาวโลก..."; -

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

การนำเสนอภาพ


การรวม PHP และ HTML

ไวยากรณ์ PHP ใช้ได้เฉพาะในแท็ก PHP เท่านั้น

PHP สามารถฝังลงใน HTML และวางไว้ที่ใดก็ได้ในเอกสาร

เมื่อ PHP ถูกฝังอยู่ในเอกสาร HTML และ PHP แยกวิเคราะห์เอกสารนี้ จะตีความส่วนที่ล้อมรอบด้วยแท็กเปิด () ของ PHP และละเว้นส่วนที่เหลือของเอกสาร

PHP และ HTML จะเห็นร่วมกันในตัวอย่างต่อไปนี้

หน้า PHP

ฝึกฝนออนไลน์ที่นี่:

นิพจน์ทั่วไปเป็นเครื่องมือที่มีประโยชน์มากสำหรับนักพัฒนา สามารถใช้เพื่อค้นหา ระบุ หรือแทนที่ข้อความ คำ หรืออักขระอื่นๆ บทความวันนี้ประกอบด้วยนิพจน์ทั่วไปที่มีประโยชน์ที่สุด 15 รายการซึ่งจะเป็นประโยชน์สำหรับนักพัฒนาเว็บ

รู้เบื้องต้นเกี่ยวกับนิพจน์ทั่วไป

นักพัฒนาใหม่จำนวนมากพบว่านิพจน์ทั่วไปเข้าใจและใช้งานได้ยากมาก ที่จริงแล้วทุกอย่างไม่ได้ยากอย่างที่คิด ก่อนที่เราจะพูดถึงนิพจน์ทั่วไปด้วยโค้ดที่มีประโยชน์และใช้งานได้หลากหลาย มาดูข้อมูลพื้นฐานกันก่อน:

ไวยากรณ์นิพจน์ทั่วไป

การแสดงออกปกติ วิธี
ฟู สตริง “ฟู”
^ฟู่ บรรทัดขึ้นต้นด้วย “foo”
ฟู$ บรรทัดลงท้ายด้วย “foo”
^ฟู$ "foo" ปรากฏเพียงครั้งเดียวในบรรทัด
ก ข หรือค
อักขระตัวพิมพ์เล็กใด ๆ
[^ก-ฮ] อักขระใดๆ ที่ไม่ใช่ตัวพิมพ์ใหญ่
(gif|jpg) หมายถึงทั้ง “gif” และ “jpeg”
+ อักขระตัวพิมพ์เล็กอย่างน้อยหนึ่งตัว
ตัวเลข จุด หรือเครื่องหมายลบใดๆ
^{1,}$ คำใดก็ได้ อย่างน้อยหนึ่งตัวอักษร ตัวเลข หรือ _
()() wy, wz, xy หรือ xz
(^เอ-ซ่า-z0-9) อักขระใดๆ (ไม่ใช่ตัวเลขหรือตัวอักษร)
({3}|{4}) หมายถึงตัวอักษรสามตัวหรือตัวเลข 4 ตัว

ฟังก์ชัน PHP สำหรับนิพจน์ทั่วไป

การทำงาน คำอธิบาย
preg_match() ฟังก์ชัน preg_match() ค้นหาสตริงโดยใช้รูปแบบที่กำหนด จะส่งคืนค่าจริงหากพบสตริง มิฉะนั้นจะคืนค่าเป็นเท็จ
preg_match_all() ฟังก์ชัน preg_match_all() ค้นหารายการทั้งหมดของสตริงที่มีรูปแบบ
preg_แทนที่() ฟังก์ชัน preg_replace() ทำงานบนหลักการเดียวกันกับ ereg_replace() ยกเว้นว่านิพจน์ทั่วไปสามารถใช้เพื่อระบุทั้งรูปแบบการค้นหาและสตริงที่จะใช้แทนที่ค่าที่พบ
preg_split() ฟังก์ชัน preg_split() ทำหน้าที่เหมือนกับ split() ยกเว้นว่านิพจน์ทั่วไปสามารถใช้เป็นพารามิเตอร์ให้กับรูปแบบการค้นหาได้
preg_grep() ฟังก์ชัน preg_grep() ค้นหาองค์ประกอบทั้งหมดของอาร์เรย์อินพุต โดยส่งคืนองค์ประกอบทั้งหมดที่ตรงกับรูปแบบนิพจน์ทั่วไป
preg_quote() เลี่ยงอักขระนิพจน์ทั่วไป

การตรวจสอบชื่อโดเมน

ตรวจสอบว่าสตริงเป็นชื่อโดเมนที่ถูกต้องหรือไม่

$url = "http://komunitasweb.com/"; if (preg_match("/^(http|https|ftp)://(*(?:.*)+):?(d+)?/?/i", $url)) ( echo "URL ของคุณก็โอเค "; ) อื่น ๆ ( echo "URL ผิด"; )

การเน้นคำในข้อความ

นี่เป็นนิพจน์ทั่วไปที่มีประโยชน์มาก โดยคุณสามารถค้นหาคำที่ต้องการและไฮไลต์ได้ มีประโยชน์อย่างยิ่งในการแสดงผลการค้นหา

$text = "ประโยคตัวอย่างจาก KomunitasWeb regex ได้รับความนิยมในการเขียนโปรแกรมเว็บ ตอนนี้เราเรียนรู้ regex ตามวิกิพีเดีย นิพจน์ทั่วไป (ตัวย่อว่า regex หรือ regexp โดยมีรูปแบบพหูพจน์ regexes, regexps หรือ regexen) ถูกเขียนในรูปแบบที่เป็นทางการ ภาษาที่สามารถตีความได้โดยตัวประมวลผลนิพจน์ทั่วไป"; $text = preg_replace("/b(regex)b/i", " 1", $ข้อความ); เสียงสะท้อน $ข้อความ;

เน้นผลการค้นหาในบล็อก WordPress

ดังที่กล่าวไว้ในตัวอย่างก่อนหน้านี้ ตัวอย่างโค้ดนี้สะดวกในการใช้ในผลการค้นหา และเป็นวิธีที่ดีเยี่ยมในการใช้ฟังก์ชันนี้ในบล็อก WordPress

เปิดไฟล์ search.php ของคุณ และค้นหาฟังก์ชัน the_title() แทนที่ด้วยรหัสต่อไปนี้:

เสียงสะท้อน $title;

เหนือบรรทัดนี้ ให้เพิ่มโค้ดนี้:

\0", $title); ?>

บันทึกไฟล์ search.php และเปิด style.css เพิ่มบรรทัดต่อไปนี้:

Strong.search-ข้อความที่ตัดตอนมา ( พื้นหลัง: สีเหลือง; )

รับภาพทั้งหมดจากเอกสาร HTML

หากคุณต้องการรับรูปภาพทั้งหมดจากหน้าเว็บ โค้ดนี้เป็นสิ่งที่ต้องมี คุณสามารถสร้างโปรแกรมดาวน์โหลดรูปภาพได้อย่างง่ายดายโดยใช้พลังของ cURL

$images = array(); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $data, $media); ไม่ได้ตั้งค่า($ข้อมูล); $data = preg_replace("/(img|src)("|\"|="|=\")(.*)/i", "$3", $media); foreach ($data as $url) ( $info = pathinfo($url); if (isset($info["extension"])) ( if (($info["extension"] == "jpg") || ($ข้อมูล["ส่วนขยาย"] == "jpeg") ||. ($ข้อมูล ["ส่วนขยาย"] == "gif") ||. ($ข้อมูล ["ส่วนขยาย"] == "png")) array_push($ รูปภาพ, $url);

ลบคำที่ซ้ำกัน (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่)

ตอนพิมพ์คำซ้ำบ่อยมั้ย? นิพจน์ทั่วไปนี้จะช่วยได้

$text = preg_replace("/s(w+s)1/i", "$1", $text);

การลบเครื่องหมายวรรคตอนซ้ำ

สิ่งเดียวกันสำหรับเครื่องหมายวรรคตอนเท่านั้น บอกลาเครื่องหมายจุลภาคคู่

$text = preg_replace("/.+/i", ".", $text);

ค้นหาแท็ก XML/HTML

ฟังก์ชันอย่างง่ายนี้รับสองอาร์กิวเมนต์ แท็กแรกคือแท็กที่คุณต้องการค้นหา และแท็กที่สองคือตัวแปรที่มี XML หรือ HTML ขอย้ำอีกครั้งว่าฟังก์ชันนี้สะดวกมากเมื่อใช้ร่วมกับ cURL

ฟังก์ชั่น get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?)")", $xml, $matches, PREG_PATTERN_ORDER);

ส่งคืนการแข่งขัน $; -

ค้นหาแท็ก XHTML/XML ด้วยค่าแอตทริบิวต์เฉพาะ

.

ฟังก์ชันนี้คล้ายกับฟังก์ชันก่อนหน้ามาก ยกเว้นว่าคุณสามารถกำหนดแอตทริบิวต์ที่ต้องการให้กับแท็กได้ ตัวอย่างเช่นคุณสามารถค้นหาได้ง่าย<(".$tag.")[^>ฟังก์ชั่น get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; else $tag = preg_quote($tag); $attr = preg_quote($ attr); $value = preg_quote($value); $tag_regex = "/<\/\\1>]*$attr\s*=\s*". "(["\"])$value\\2[^>]*>(.*?)

/" preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); ส่งคืน $matches; )

ค้นหาค่าสีเลขฐานสิบหก

อีกหนึ่งเครื่องมือที่มีประโยชน์สำหรับนักพัฒนาเว็บ! ช่วยให้คุณค้นหา/ตรวจสอบค่าสีเลขฐานสิบหก

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "ตัวอย่าง 6 สำเร็จ"; )

ค้นหาชื่อบทความ ข้อมูลโค้ดนี้จะค้นหาและแสดงข้อความที่อยู่ในแท็ก

ในหน้า html (.*)$fp = fopen("http://www.catswhocode.com/blog","r"); ในขณะที่ (!feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi("

",$หน้า,$regs); echo $regs; fclose($fp);

กำลังแยกวิเคราะห์บันทึก Apache

//บันทึก: เว็บเซิร์ฟเวอร์ Apache // เข้าถึงไฟล์ HTML ได้สำเร็จเท่านั้น มีประโยชน์ในการนับจำนวนการดูเพจ "^((?#IP ไคลเอนต์หรือชื่อโดเมน)S+)s+((?#การรับรองความถูกต้องขั้นพื้นฐาน)S+s+S+)s+[((?#วันที่และเวลา)[^]]+)]s+"(?: GET|POST|HEAD) ((?#file)/[^ ?]+?.html?)??((?#parameters)[^ ?]+)? HTTP/+"s+(?#รหัสสถานะ)200s+((?#bytes ถ่ายโอน)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent )[^"]*)"$" //บันทึก: เว็บเซิร์ฟเวอร์ Apache // ข้อผิดพลาด 404 เท่านั้น "^((?#client IP หรือชื่อโดเมน)S+)s+((?#การรับรองความถูกต้องพื้นฐาน)S+s+S+) s+[((?#วันที่และเวลา)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parameters)[ ^ ?"]+)? HTTP/+"s+(?#รหัสสถานะ)404s+((?#bytes ถ่ายโอน)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent )[^"]*)"$"

การแทนที่เครื่องหมายคำพูดคู่ด้วยเครื่องหมายคำพูดอัจฉริยะ

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

Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $ข้อความ);

การตรวจสอบรหัสผ่านที่ครอบคลุม

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

ช่องข้อความต้องมีอักขระตัวพิมพ์ใหญ่อย่างน้อยหนึ่งตัว อักขระตัวพิมพ์เล็กหนึ่งตัว และตัวเลขหนึ่งตัว

"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?) [-_a-zA-Z0-9](6,)z"

WordPress: การใช้นิพจน์ทั่วไปเพื่อรับรูปภาพจากโพสต์

เนื่องจากหลายๆ คนเป็นผู้ใช้ WordPress คุณอาจจำเป็นต้องมีโค้ดที่ช่วยให้คุณได้รับรูปภาพทั้งหมดจากข้อความในบทความและแสดงได้

หากต้องการใช้โค้ดนี้ เพียงวางลงในไฟล์ใดก็ได้ในธีมของคุณ

post_content; $szSearchPattern = "~ ]* />~"; // เรียกใช้ preg_match_all เพื่อดึงภาพทั้งหมดและบันทึกผลลัพธ์ใน $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics); // ตรวจสอบว่าเรามีรูปภาพอย่างน้อย 1 ภาพหรือไม่ $iNumberOfPics = count($aPics); if ($iNumberOfPics > 0) ( // ทีนี้ คุณจะทำทุกอย่างที่ต้องทำกับรูปภาพ // สำหรับตัวอย่างนี้ รูปภาพจะถูกแสดงเพียง ($i=0; $i< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

การสร้างอีโมติคอนอัตโนมัติ

คุณสมบัติอื่นที่ใช้ใน WordPress คือช่วยให้คุณสามารถแทนที่อักขระอิโมจิด้วยรูปภาพอิโมจิได้โดยอัตโนมัติ

$texte="ข้อความที่มีสไมลี่ :-)"; เสียงสะท้อน str_replace(":-)" ",$ข้อความ);

JavaScript ถูกบล็อกในเบราว์เซอร์ของคุณ กรุณาเปิดใช้งาน JavaScript เพื่อให้ไซต์ทำงานได้!

strip_tags

(PHP 3 >= 3.0.8, PHP 4, PHP 5)

strip_tags- ลบแท็ก HTML และ PHP ออกจากสตริง

คำอธิบาย

เชือก strip_tags(สตริง str [, สตริงที่อนุญาต_tags])

ฟังก์ชันนี้ส่งคืนสตริง str โดยลบแท็ก HTML และ PHP ออก หากต้องการลบแท็ก ให้ใช้เครื่องจักรอัตโนมัติแบบเดียวกับที่ใช้ในฟังก์ชัน fgetss().

อาร์กิวเมนต์ที่สองที่เป็นทางเลือกสามารถใช้เพื่อระบุแท็กที่ไม่ควรลบออก

ความคิดเห็น:อาร์กิวเมนต์ Allowable_tags ถูกเพิ่มใน PHP 3.0.13 และ PHP 4.0b3 ตั้งแต่ PHP 4.3.0 ความคิดเห็น HTML จะถูกลบออกด้วย

ความสนใจ

เพราะ แถบ_แท็ก()ไม่ตรวจสอบความถูกต้องของโค้ด HTML แท็กที่ไม่สมบูรณ์อาจนำไปสู่การลบข้อความที่ไม่รวมอยู่ในแท็ก

ตัวอย่างที่ 1: ตัวอย่างการใช้งาน แถบ_แท็ก()
$ข้อความ = "

ย่อหน้า

ข้อความเพิ่มเติมอีกเล็กน้อย"; echo strip_tags($text); echo "\n\n-------\n"; // อย่าลบ

เสียงสะท้อน strip_tags($text, "

"); // อนุญาต ,,echo strip_tags($ข้อความ, " ");

ตัวอย่างนี้จะแสดงผล:

ย่อหน้า ข้อความเพิ่มเติมบางส่วน -------

ย่อหน้า

ข้อความเพิ่มเติมบางส่วน

ความสนใจ

ฟังก์ชันนี้จะไม่เปลี่ยนแอตทริบิวต์ของแท็กที่ระบุในอาร์กิวเมนต์ Allowable_tags รวมถึงสไตล์และ onmouseover

ตั้งแต่ PHP 5.0.0 แถบ_แท็ก()ปลอดภัยในการประมวลผลข้อมูลในรูปแบบไบนารี

ฟังก์ชั่นนี้มีข้อเสียเปรียบอย่างมาก - มันจะรวมคำเข้าด้วยกันเมื่อลบแท็ก นอกจากนี้ฟังก์ชันนี้ยังมีช่องโหว่อีกด้วย ฟังก์ชั่นทางเลือกที่คล้ายกับ strip_tags:

c" * - "dirty" html ได้รับการประมวลผลอย่างถูกต้องเมื่ออาจมีสัญลักษณ์ในค่าแอตทริบิวต์ของแท็ก< >* - html ที่เสียหายได้รับการประมวลผลอย่างถูกต้อง * - ความคิดเห็น, สคริปต์, สไตล์, PHP, Perl, รหัส ASP, แท็ก MS Word, CDATA ถูกตัดออก * - ข้อความจะถูกจัดรูปแบบโดยอัตโนมัติหากมีรหัส html * - ป้องกันการปลอมแปลงเช่น: "<สคริปต์> การแจ้งเตือน ("สวัสดี") script>" * * @param string $s * @param array $allowable_tags อาร์เรย์ของแท็กที่จะไม่ถูกตัด * ตัวอย่าง: "b" -- แท็กจะยังคงอยู่พร้อมกับแอตทริบิวต์ " " -- แท็กจะคงอยู่โดยไม่มีแอตทริบิวต์ * @param bool $is_format_spaces จัดรูปแบบการเว้นวรรคและการขึ้นบรรทัดใหม่หรือไม่ * ข้อความเอาต์พุต (ธรรมดา) ใกล้เคียงกับข้อความที่ป้อนในเบราว์เซอร์มากที่สุด * กล่าวอีกนัยหนึ่งคือ แปลงข้อความได้อย่างถูกต้อง /html เป็นข้อความ/ธรรมดา * ข้อความจะถูกจัดรูปแบบเฉพาะในกรณีที่แท็กใด ๆ ถูกตัดออก * @param array $pair_tags อาร์เรย์ของชื่อแท็กที่จับคู่ซึ่งจะถูกลบพร้อมกับเนื้อหา * ดูค่าเริ่มต้น * @param array $para_tags อาร์เรย์ของชื่อแท็กที่จับคู่ ซึ่งจะถือเป็นย่อหน้า (ถ้า $is_format_spaces = true) * ดูค่าเริ่มต้น * @return string * * @license http://creativecommons.org/licenses/by-sa/3.0/ * @author Nasibullin Rinat, http: //orangetie.ru/ * @charset ANSI * @version 4.0.14 */ function strip_tags_smart(/*string*/ $s, array $allowable_tags = null, /*boolean*/ $is_format_spaces = true, array $pair_tags = array ("script", "style", "map", "iframe", "frameset", "object", "applet", "comment", "button", "textarea", "select"), array $para_tags = array("p", "td", "th", "li", "h1", "h2", "h3", "h4", "h5", "h6", "div", "form", "title", "pre")) ( //return strip_tags($s);<=[\=\x20\r\n\t]|\xc2\xa0) "[^"]*" | (?<=[\=\x20\r\n\t]|\xc2\xa0) \"[^\"]*\")* #incorrect attributes [^>คงที่ $_callback_type = false;<" . $tag . ">$_allowable_tags = array(); คงที่คงที่ $_para_tags = array();<" . $tag . " />#นิพจน์ทั่วไปสำหรับแอตทริบิวต์ของแท็ก #แก้ไขกระบวนการ HTML ที่สกปรกและใช้งานไม่ได้ในชุดอักขระ UTF-8 ไบต์เดียวหรือหลายไบต์!<" . $tag . ">static $re_attrs_fast_safe = "(?!) #statement ซึ่งตามหลังแท็ก #correct คุณลักษณะ (?> [^>"\"]+ | (?<")) === false || strpos($s, ">]*+"; if (is_array($s)) ( if ($_callback_type === "strip_tags") ( $tag = strtolower($s); if ($_allowable_tags) ( #tag พร้อมแอตทริบิวต์ if (array_key_exists($ แท็ก, $_allowable_tags)) ส่งคืน $s; #tag โดยไม่มีแอตทริบิวต์ถ้า (array_key_exists("", $_allowable_tags)) ( ถ้า (substr($s, 0, 2) === "<([\?\%]) .*? \\1>"; if (substr($s, -2) === "/>") กลับ "<\!\\]>"; กลับ "<\!\[ [\x20\r\n\t]* .*? \]>"; ) ) if ($tag === "br") ส่งคืน "\r\n"; if ($_para_tags && array_key_exists($tag, $_para_tags)) return "\r\n\r\n"; return ""; ) trigger_error("ไม่ทราบประเภทการติดต่อกลับ "" . $_callback_type . ""!", E_USER_ERROR ) if (($pos = strpos($s, ");... "/<\!--.*?-->/sSX", #comments #MS Word แท็กเช่น "...", #การเรียกใช้โค้ดแบบมีเงื่อนไขสำหรับประเภท IE " HTML " #การเรียกใช้โค้ดแบบมีเงื่อนไขสำหรับประเภท IE "HTML" #ดู http://www.tigir.com/comments.htm "/<\! (?:--)?+ \[ (?>- "[^"]*" | \"[^\"]*\")* \] (?:--)?+ > /sxSX",); if ($pair_tags) ( #paired แท็กพร้อมกับเนื้อหา: foreach ($pair_tags เป็น $k => $v) $pair_tags[$k] = preg_quote($v, "/"); $patterns = "/<((?i:" . implode("|", $pair_tags) . "))" . $re_attrs_fast_safe . "(? .*? <\/(?i:\\1)" . $re_attrs_fast_safe . ">/sxSX"; ) #d($patterns); $i = 0; #loop ป้องกัน $max = 99; ในขณะที่ ($i< $max) { $s2 = preg_replace($patterns, "", $s); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($i == 0) { $is_html = ($s2 != $s || preg_match($re_tags, $s2)); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($is_html) { if ($is_format_spaces) { /* В библиотеке PCRE для PHP \s - это любой пробельный символ, а именно класс символов [\x09\x0a\x0c\x0d\x20\xa0] или, по другому, [\t\n\f\r \xa0] Если \s используется с модификатором /u, то \s трактуется как [\x09\x0a\x0c\x0d\x20] Браузер не делает различия между пробельными символами, друг за другом подряд идущие символы воспринимаются как один */ #$s2 = str_replace(array("\r", "\n", "\t"), " ", $s2); #$s2 = strtr($s2, "\x09\x0a\x0c\x0d", " "); $s2 = preg_replace("/ [\x09\x0a\x0c\x0d]++ | <((?i:pre|textarea))" . $re_attrs_fast_safe . "(? .+? <\/(?i:\\1)" . $re_attrs_fast_safe . ">\K /sxSX", " ", $s2); if (preg_last_error() !== PREG_NO_ERROR) ( $i = 999; break; ) ) #array ของแท็กที่จะไม่ถูกตัดถ้า ($allowable_tags) $_allowable_tags = array_flip ($allowable_tags); #pair แท็กที่จะถือเป็นย่อหน้า if ($para_tags) $_para_tags = array_flip($para_tags) )#if #tags กำลังประมวลผล if ($is_html) ( $_callback_type = "strip_tags"; $s2) ; = preg_replace_callback($re_tags, __FUNCTION__, $s2); $_callback_type = false; if (preg_last_error() !== PREG_NO_ERROR) ( $i = 999; แตก; ) ) ถ้า ($s === $s2) ทำลาย $ ; s = $s2; $i++; )# While if ($i >= $max) $s = strip_tags($s) ! = = $length) ( #remove aซ้ำช่องว่าง $s = preg_replace("/\x20\x20++/sSX", " ", trim($s)); #ลบช่องว่างก่อนและหลังบรรทัดใหม่ $s = str_replace( array ("\r\n\x20", "\x20\r\n"), "\r\n", $s); #replace 3 และบรรทัดใหม่เพิ่มเติมเป็น 2 บรรทัดใหม่ $s = preg_replace("/ [ \r\n](3,)+/sSX", "\r\n\r\n", $s);

) ส่งคืน $s; -