นิพจน์ทั่วไป php s นิพจน์ทั่วไป (รูปแบบ) วิธีการเขียนประโยคปกติ

การใช้นิพจน์ทั่วไปทั่วไปใน Perl คือการค้นหาและแทนที่ตัวดำเนินการ เช่น s// , m/ ตัวดำเนินการเชื่อมโยง =~ หรือ != เป็นต้น ตามกฎแล้ว โอเปอเรเตอร์เหล่านี้ทั้งหมดมีตัวเลือกที่คล้ายกัน เช่น:

โดยปกติแล้ว ตัวเลือกทั้งหมดเหล่านี้จะแสดงเป็น "/x" สามารถใช้ภายในเทมเพลตโดยใช้โครงสร้างใหม่ (?...)

นิพจน์ทั่วไปหรือรูปแบบจะเหมือนกับขั้นตอน regexp ใน Unix นิพจน์และไวยากรณ์ยืมมาจากขั้นตอน V8 ที่แจกจ่ายอย่างอิสระโดย Henry Spencer ซึ่งมีการอธิบายโดยละเอียด

เทมเพลตใช้อักขระเมตาต่อไปนี้ (อักขระที่แสดงถึงกลุ่มของอักขระอื่น) ซึ่งมักเรียกว่ามาตรฐาน egrep:

MetaCharacter มีตัวดัดแปลง (เขียนหลัง meta character):

ในกรณีอื่นๆ ทั้งหมด วงเล็บปีกกาจะถือเป็นอักขระธรรมดา (ปกติ) ดังนั้น "*" จึงเทียบเท่ากับ (0,) , "+" คือ (1,) และ "?" - (0.1) n และ m ต้องไม่มากกว่า 65536

ตามค่าเริ่มต้น เมตาคาแรคเตอร์จะโลภมาก การแข่งขันจะเผยแพร่หลายครั้งที่สุดเท่าที่จะเป็นไปได้ โดยไม่คำนึงถึงผลกระทบของเมตาอักขระที่ตามมา หากคุณต้องการ "ลดความอยากอาหาร" ให้ใช้สัญลักษณ์ "?" สิ่งนี้ไม่ได้เปลี่ยนความหมายของเมตาคาแรคเตอร์ แต่เพียงลดการแพร่กระจายเท่านั้น ดังนั้น:

สัญลักษณ์แทนทำงานในลักษณะเดียวกับเครื่องหมายคำพูดคู่ ดังนั้นคุณจึงใช้ `\` - อักขระ (อักขระแบ็กสแลช) ได้:

\t - อักขระแท็บ
\n - บรรทัดใหม่
\r - การโอนรถ
\ก - การแปลรูปแบบ
\v - การจัดตารางแนวตั้ง
\ก - เรียก
\e - หนี
\033 - สัญกรณ์สัญลักษณ์ฐานแปด
\x1A - เลขฐานสิบหก
\ค[ - สัญลักษณ์ควบคุม
\ล - ตัวอักษรตัวถัดไปตัวพิมพ์เล็ก
\u - ตัวพิมพ์ใหญ่ -//-
\ล - ตัวอักษรทั้งหมดเป็นตัวพิมพ์เล็กจนถึง \E
\U - ด้านบน -//-
\E - ลงทะเบียนตัว จำกัด การเปลี่ยนแปลง
\คิว - ยกเลิกการกระทำที่เป็นเมตาตัวละคร

นอกจากนี้ metaCharacters ต่อไปนี้ได้ถูกเพิ่มลงใน Perl:

โปรดทราบว่านี่คืออักขระ "ตัวเดียว" ทั้งหมด ใช้ตัวแก้ไขเพื่อระบุลำดับ ดังนั้น:

นอกจากนี้ยังมีอักขระเมตาในจินตนาการอีกด้วย แสดงถึงสัญลักษณ์ที่ไม่มีอยู่ ณ ตำแหน่งที่ค่าเปลี่ยนแปลง เช่น:

ขอบเขตคำ (\b) เป็นจุดจินตภาพระหว่างอักขระ \w และ \W ภายในคลาสอักขระ "\b" แสดงถึงอักขระ Backspace เมตาอักขระ \A และ \Z คล้ายกับ "^" และ "$" แต่ในขณะที่บรรทัดเริ่มต้น "^" และจุดสิ้นสุดบรรทัด "$" ทำหน้าที่สำหรับแต่ละบรรทัดในสตริงหลายบรรทัด ดังนั้น \A และ \Z จะทำเครื่องหมายจุดเริ่มต้นและ จุดสิ้นสุดของสตริงหลายบรรทัดทั้งหมด

หากใช้การจัดกลุ่ม (วงเล็บ) ภายในรูปแบบ หมายเลขสตริงย่อยของกลุ่มจะถูกกำหนดเป็น "\digit" โปรดทราบว่าตามรูปแบบภายในนิพจน์หรือบล็อก กลุ่มเหล่านี้จะแสดงเป็น "$digit" นอกจากนี้ยังมีตัวแปรเพิ่มเติม:

ตัวอย่าง:

$s = "หนึ่ง 1 สอง 2 และสาม 3";

ถ้า ($s =~ /(\d+)\D+(\d+)/) ( พิมพ์ "$1\n"; # ผลลัพธ์ "1" พิมพ์ "$2\n"; # "2" พิมพ์ "$+\n" ; # "2" พิมพ์ "$&\n"; # "1 สอง 2" พิมพ์ "$`\n"; # "หนึ่ง " พิมพ์ "$"\n"; # " และสาม 3" )

ตัวอย่าง:

Perl เวอร์ชัน 5 มีโครงสร้างเทมเพลตเพิ่มเติม:

$s = "1+2-3*4"; if ($s =~ /(\d)(?=-)/) # ค้นหาตัวเลขตามด้วย "-" ( พิมพ์ "$1\n"; # ผลลัพธ์ "2" ) else ( พิมพ์ "ข้อผิดพลาดการค้นหา\n" ; )

ตัวอย่าง:

(?!รูปแบบ) - “มองไปข้างหน้า” ด้วยการปฏิเสธ:

$s = "1+2-3*4"; if ($s =~ /(\d)(?!\+)/) # ค้นหาตัวเลขที่ไม่ตามด้วย "+" ( พิมพ์ "$1\n"; # ผลลัพธ์ "2" ) else ( พิมพ์ "ค้นหา ข้อผิดพลาด\n"; )

(?ismx) - ตัวดัดแปลง "ภายใน" สะดวกในการใช้ในเทมเพลต เช่น คุณต้องระบุตัวแก้ไขภายในเทมเพลต กฎการแสดงออกปกติ

  • - (นิพจน์ทั่วไป)
  • อักขระใดๆ ก็ตามที่แสดงถึงตัวมันเอง เว้นแต่จะเป็นอักขระเมตา หากคุณต้องการยกเลิกเอฟเฟกต์ของอักขระเมตา ให้ใส่ "\" ไว้ข้างหน้า
  • สตริงอักขระหมายถึงสตริงของอักขระเหล่านี้
  • ชุดอักขระที่เป็นไปได้ (คลาส) จะอยู่ในวงเล็บเหลี่ยม "" ซึ่งหมายความว่าอักขระตัวใดตัวหนึ่งที่ระบุในวงเล็บสามารถปรากฏในตำแหน่งนี้ได้ หากอักขระตัวแรกในวงเล็บคือ “^” แสดงว่าอักขระที่ระบุไม่สามารถปรากฏ ณ จุดนี้ในนิพจน์ได้ ภายในชั้นเรียน คุณสามารถใช้สัญลักษณ์ "-" เพื่อแสดงถึงช่วงของอักขระได้ ตัวอย่างเช่น a-z คือหนึ่งในตัวอักษรตัวเล็กของอักษรละติน 0-9 คือตัวเลข เป็นต้น

    ฟอรัมพอร์ทัล 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", $text); สะท้อน $ข้อความ;

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

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

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

    เสียงสะท้อน $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("(]*>(.*?).")", $xml, $matches, PREG_PATTERN_ORDER); return $matches; )

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

    ฟังก์ชันนี้คล้ายกับฟังก์ชันก่อนหน้ามาก ยกเว้นว่าคุณสามารถกำหนดแอตทริบิวต์ที่ต้องการให้กับแท็กได้ ตัวอย่างเช่น คุณสามารถค้นหาได้อย่างง่ายดาย

    ฟังก์ชั่น 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 = "/]*$attr\s*=\s*". .*?)/" 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("(.*)",$page,$regs); เสียงสะท้อน $regs; fclose($fp);

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

    เว็บไซต์ส่วนใหญ่เปิดตัวบนที่รู้จักกันดี เว็บเซิร์ฟเวอร์อาปาเช่- หากเว็บไซต์ของคุณเป็นหนึ่งในนั้น ทำไมไม่ใช้ PHP และนิพจน์ทั่วไปเพื่อแยกวิเคราะห์บันทึก 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 คุณอาจจำเป็นต้องมีโค้ดที่ช่วยให้คุณได้รับรูปภาพทั้งหมดจากข้อความในบทความและแสดงได้

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



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