Тогтмол илэрхийллийн синтакс

PHP орчуулагч файлыг боловсруулахдаа шошгыг хайдаг, энэ нь PHP код хаана эхэлж, хаана дуусахыг заадаг. Нээх, хаах хос тэмдэглэгээнээс бусад бүх зүйлийг орчуулагч үл тоомсорлох болно (өөрөөр хэлбэл вэб серверт байгаагаар нь өгөх болно). Жишээлбэл, PHP орчуулагч руу дамжуулсан файл дараах кодтой байна.

Орчуулагч үүнийг үл тоомсорлож, эхлээд вэб серверт байгаагаар нь өгөх бөгөөд энэ нь эргээд хөтөч рүү өгөх болно.

Үүнийг орчуулагч үл тоомсорлож, вэб сервер рүү байгаагаар нь дамжуулах болно.

Хэрэв файл нь зөвхөн PHP код агуулсан эсвэл энэ нь файлын хамгийн төгсгөлд байрладаг, өөрөөр хэлбэл түүний дараа юу ч байхгүй бол хаалтын шошгыг орхих нь дээр (үүнийг зааж өгөхгүй). Энэ нь PHP хаалтын тагны дараа санамсаргүй хоосон зай нэмэхээс зайлсхийхэд тусалдаг бөгөөд энэ нь хүсээгүй үр дагаварт хүргэж болзошгүй юм.

PHP нь мөн богино нээлтийн шошгыг зөвшөөрдөг

Хоосон зайны тэмдэгтүүд

PHP кодонд та хоосон зайны тэмдэгтүүдийг ашиглаж болно: хоосон зай, таб, мөр таслах. Хоосон зайны тэмдэгтүүдийн тоо хязгаарлагдмал биш бөгөөд програмистын сонголтоос хамаардаг бөгөөд гол зорилго нь ойлгомжтой, хялбар уншигдахуйц програмын текст (эх код) үүсгэх явдал юм.

Доорх жишээ нь хоосон зай ашигладаг PHP код юм.

Жишээ кодыг хоосон зай ашиглахгүйгээр нэг мөрөнд бичиж болох боловч ийм кодыг уншихад бага байх болно:

Хамгийн сүүлд 2019 оны 11-р сарын 27-ны 07:10:59 (UTC/GMT +8 цаг)

PHP нээх, хаах шошго синтакс

Php-д ашиглаж болох дөрвөн өөр хос нээх, хаах шошгууд байдаг. Энд шошгуудын жагсаалт байна.

  • Өгөгдмөл синтакс
  • Богино нээлттэй шошго
  • Файлын төгсгөлд PHP хаалтын шошгыг орхи

Өгөгдмөл синтакс

Өгөгдмөл синтакс нь "-ээр эхэлдэг.".

Жишээ:

Богино нээлттэй шошго

Богино шошгууд нь " гэж эхэлдэг.". Богино загварын шошгууд нь сервер дээрх php.ini тохиргооны файлд идэвхжсэн үед л боломжтой.

Жишээ:

Файлын төгсгөлд PHP хаах тагийг орхи

Зөвхөн РНР код агуулсан файлд хаагдах РНР шошгыг орхихыг зөвлөж байна, ингэснээр PHP хаалтын тагны дараа санамсаргүй хоосон зай эсвэл шинэ мөр нэмэгдэхээс зайлсхийх боломжтой бөгөөд энэ нь гаралтын буферлэлтийг эхлүүлж, дуудагдахгүй үр дагаварт хүргэж болзошгүй юм.

Жишээ:

PHP мэдэгдлийг салгах

РНР хэл дээрх мэдэгдлүүд нь C эсвэл Perl шиг цэгтэй таслалаар (;) төгсдөг. PHP кодын блокийн хаалтын шошго нь автоматаар цэгтэй таслалыг илэрхийлдэг тул PHP блокийн сүүлчийн мөрийг төгсгөх цэгтэй таслал байх шаардлагагүй.

Мэдэгдэл салгах дүрэм

  • цэг таслал
  • БА/ЭСВЭЛ
  • хаалтын PHP таг

Хүчинтэй кодууд

Дээрх жишээнд цэгтэй таслал(;) болон PHP хаалтын таг хоёулаа байна.

Дээрх жишээнд сүүлийн зааврын дараа цэгтэй таслал(;) байхгүй ч PHP хаах таг байна.

Дээрх жишээн дээр сүүлийн зааварт цэгтэй таслал(;) байгаа боловч хаах PHP таг байхгүй байна.

PHP том үсгийн мэдрэмж

PHP дээр хэрэглэгч функц, анги, үндсэн хэлний түлхүүр үгсийг (жишээ нь, if, else, while, echo гэх мэт) том жижиг үсгээр тодорхойлсон байдаг. Тиймээс дараах жишээн дээрх гурван цуурай мэдэгдэл тэнцүү байна.

Жишээ - 1

"); ECHO("Бид PHP том жижиг үсгийн мэдрэмжийг сурч байна
"); EcHo("Бид 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) ?>

Оюутны нэр: Дэвид Рэй Түүний анги нь: V ба нэрийн дугаар. 12 байна

Жишээ: Цонх болон хоосон зайны мэдрэмж

Дараах жишээнд хоосон зай, табыг тоон үйлдэлд ашигласан боловч хоёр тохиолдолд $xyz ижил утгыг буцаана.

"; // таб болон хоосон зай $xyz = 11 + 12; echo $xyz; ?>

PHP: Нэг мөр ба олон мөрт тайлбар

Нэг мөр тайлбар

PHP нь тайлбар бичих дараах хоёр өөр аргыг дэмждэг.

# Энэ бол нэг мөр тайлбар юм.

//Энэ бол нэг мөр тайлбар хийх өөр нэг арга юм.

Жишээ:

Олон мөртэй сэтгэгдэл

PHP нь "C" загварын тайлбарыг дэмждэг. Тайлбар нь хос /* тэмдэгтээр эхэлж, */ тэмдэгтээр төгсдөг.

/* Энэ бол олон тайлбар тест юм,
мөн эдгээр мөрүүдийг үл тоомсорлох болно
гүйцэтгэх үед */

Жишээ:

Олон мөрийн тайлбарыг оруулах боломжгүй

Анхны PHP скрипт

Энэ бол вэб хөтөч дээр "Hello World..." гэж харуулах анхны PHP скрипт юм.

<?php echo "Сайн уу Дэлхий..."; ?>

Шошгууд нь вэб серверт шошгон доторх бүх зүйлийг ажиллуулах PHP код гэж үзэхийг хэлдэг. Код нь маш энгийн. Энэ нь вэб хуудсанд "Hello World..." текстийг харуулахын тулд "echo" PHP функцийг ашигладаг. Эдгээр шошгооос гадуурх бүх зүйлийг шууд хөтөч рүү илгээдэг.

Зургийн танилцуулга


PHP болон HTML-г хослуулах

PHP синтакс нь зөвхөн PHP шошгон дотор хэрэгжинэ.

PHP-г HTML-д суулгаж, баримт бичгийн аль ч хэсэгт байрлуулж болно.

PHP-г HTML баримт бичигт суулгаж, PHP энэ баримтыг задлан шинжилж үзэхэд нээлтийн шошготой хавсаргасан хэсгийг тайлбарладаг.) PHP-г сонгоод, баримт бичгийн бусад хэсгийг үл тоомсорло.

Дараах жишээн дээр PHP болон HTML-г хамтад нь харж болно.

PHP хуудас

Энд онлайнаар дадлага хий:

Тогтмол илэрхийлэл нь хөгжүүлэгчдэд маш хэрэгтэй хэрэгсэл юм. Тэдгээрийг текст, үг эсвэл бусад тэмдэгтийг олох, тодорхойлох, солиход ашиглаж болно. Өнөөдрийн нийтлэлд ямар ч вэб хөгжүүлэгчдэд хэрэг болох хамгийн хэрэгтэй 15 тогтмол хэллэг багтсан болно.

Тогтмол илэрхийллийн танилцуулга

Олон шинэ хөгжүүлэгчид ердийн хэллэгийг ойлгох, ашиглахад маш хэцүү байдаг. Үнэндээ бүх зүйл санагдсан шиг тийм ч хэцүү биш юм. Ашигтай, олон талт код бүхий ердийн хэллэгийг ойлгохын өмнө үндсэн ойлголтуудыг авч үзье.

Тогтмол илэрхийллийн синтакс

Тогтмол илэрхийлэл гэсэн үг
foo "foo" мөр
^foo Мөр нь "foo" гэж эхэлдэг
foo$ Мөр "foo" гэж төгсдөг
^foo$ "foo" нь мөрөнд зөвхөн нэг удаа гарч ирдэг
a, b, эсвэл c
дурын жижиг үсэг
[^A-Z] том үсгээр бичээгүй аливаа тэмдэгт
(gif|jpg) "gif" ба "jpeg" гэсэн утгатай
+ Нэг буюу хэд хэдэн жижиг үсэг
Дурын тоо, цэг эсвэл хасах тэмдэг
^{1,}$ Аливаа үг, дор хаяж нэг үсэг, тоо эсвэл _
()() wy, wz, xy, эсвэл xz
(^A-Za-z0-9) Аливаа тэмдэгт (тоо эсвэл үсэг биш)
({3}|{4}) Гурван үсэг буюу 4 тоо гэсэн үг

Тогтмол илэрхийлэлд зориулсан PHP функцууд

Чиг үүрэг Тодорхойлолт
preg_match() preg_match() функц нь өгөгдсөн загвар ашиглан мөрийг хайдаг бөгөөд хэрэв мөр олдвол үнэн, үгүй ​​бол худал буцаана.
preg_match_all() preg_match_all() функц нь загварт өгөгдсөн мөрийн бүх тохиолдлыг олдог
preg_replace() 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 зүгээр байна ."; ) else ( "Буруу URL"; )

Текст дэх үгийг тодруулах

Энэ бол маш хэрэгтэй тогтмол илэрхийлэл бөгөөд түүний тусламжтайгаар та хүссэн үгээ олж, тодруулж болно. Хайлтын үр дүнг харуулахад онцгой ач холбогдолтой.

$text = "KomunitasWeb-ийн жишээ өгүүлбэр, regex нь вэб програмчлалд түгээмэл болсон. Одоо бид regex-ийг сурч байна. Wikipedia-д бичсэнээр, Тогтмол илэрхийлэл (regex эсвэл regexp гэж товчилсон, олон тооны regexs, regexps, эсвэл regexen) нь албан ёсны хэлбэрээр бичигдсэн байдаг. ердийн илэрхийлэл процессороор тайлбарлаж болох хэл"; $текст = preg_replace("/b(regex)b/i", " 1", $ текст); echo $ текст;

WordPress блог дахь хайлтын үр дүнг онцлон тэмдэглэж байна

Өмнөх жишээнд дурьдсанчлан энэхүү кодын жишээ нь хайлтын үр дүнд ашиглахад тохиромжтой бөгөөд энэ функцийг WordPress блогт хэрэгжүүлэх гайхалтай арга юм.

Search.php файлаа нээгээд,_title() функцийг олоорой. Үүнийг дараах кодоор солино уу.

Цуурай $ гарчиг;

Одоо, энэ мөрний дээр энэ кодыг нэмнэ үү:

\0", $ гарчиг); ?>

Search.php файлыг хадгалаад style.css-г нээнэ үү. Дараах мөрийг нэмнэ үү.

Strong.search-эшлэл (арын дэвсгэр: шар; )

HTML баримтаас бүх зургийг авч байна

Хэрэв танд вэб хуудаснаас бүх зургийг авах шаардлагатай байсан бол энэ кодыг заавал авах шаардлагатай. Та cURL-ийн хүчийг ашиглан зураг татагчийг хялбархан үүсгэж болно

$зураг = массив(); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $дата, $медиа); тохируулаагүй($өгөгдөл); $өгөгдөл = preg_replace("/(img|src)("|\"|="|=\")(.*)/i", "$3", $media); foreach ($өгөгдөл $url) ( $info = pathinfo($url); if (isset($info["өргөтгөл"])) ( if (($info["өргөтгөл"] == "jpg") || ($info["өргөтгөл"] == "jpeg") || ($info["өргөтгөл"] == "gif") || ($info["өргөтгөл"] == "png")) array_push($ зураг, $url);

Давхардсан үгсийг арилгах (үсгийн том жижиг жижиг)

Бичиж байхдаа үг байнга давтагддаг уу? Энэ тогтмол илэрхийлэл нь туслах болно.

$текст = preg_replace("/s(w+s)1/i", "$1", $текст);

Давхардсан цэг таслалыг арилгах

Үүнтэй ижил зүйл, зөвхөн цэг таслалын хувьд. Давхар таслалд баяртай гэж хэлээрэй.

$текст = preg_replace("/.+/i", ".", $текст);

XML/HTML шошго хайх

Энэхүү энгийн функц нь хоёр аргумент авдаг. Эхнийх нь таны олох ёстой шошго, хоёр дахь нь XML эсвэл HTML агуулсан хувьсагч юм. Дахин хэлэхэд энэ функцийг cURL-тэй хамт хэрэглэхэд маш тохиромжтой.

Функц get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?).")", $xml, $тохирох, PREG_PATTERN_ORDER); $ таарч буцаах; )

Тодорхой атрибутын утгатай XHTML/XML шошго хайх

Энэ функц нь өмнөхтэй маш төстэй бөгөөд та шошгонд хүссэн шинж чанарыг өгөх боломжтой. Жишээлбэл, та амархан олох боломжтой

.

Функц get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; other $tag = preg_quote($tag); $attr = preg_quote($) attr $value = preg_quote($tag_regex = "/);<(".$tag.")[^>]*$attr\s*=\s*". "(["\"])$утга\\2[^>]*>(.*?)<\/\\1>/" preg_match_all($tag_regex, $xml, $match, PREG_PATTERN_ORDER); буцаах $матч; )

Арван арван зургаан тоот өнгөний утгыг хайж байна

Вэб хөгжүүлэгчдэд хэрэгтэй өөр нэг хэрэгсэл! Энэ нь танд арван зургаатын тоон өнгөний утгыг олох/шалгах боломжийг олгоно.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "жишээ 6 амжилттай."; )

Нийтлэлийн гарчиг хайх

Энэ кодын хэсэг нь шошгон доторх текстийг олж харуулах болно , html хуудсан дээр.

$fp = fopen("http://www.catswhocode.com/blog", "r"); while (!feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi(" (.*)",$page,$regs); echo $regs; fclose($fp);

Apache логуудыг задлан шинжилж байна

Ихэнх сайтууд сайн мэддэг Apache вэб сервер дээр ажилладаг. Хэрэв таны сайт эдгээрийн нэг бол яагаад Apache бүртгэлийг задлан шинжлэхэд PHP болон ердийн илэрхийлэлүүдийг ашиглаж болохгүй гэж?

//Logs: Apache вэб сервер //Зөвхөн HTML файлууд руу амжилттай нэвтэрсэн. Хуудсыг үзсэн тоог тоолоход тустай. "^((?#клиент IP эсвэл домэйн нэр)S+)s+((?#үндсэн баталгаажуулалт)S+s+S+)s+[((?#огноо ба цаг)[^]]+)]s+"(?: GET|POST|HEAD) ((?#file)/[^ ?]+?.html?)??((?#parameters)[^ ?]+)? HTTP/+"s+(?#status code)200s+((?#bytes шилжүүлсэн)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent) )[^"]*)"$" //Logs: Apache вэб сервер //Зөвхөн 404 алдаатай "^((?#клиент IP эсвэл домэйн нэр)S+)s+((?#үндсэн баталгаажуулалт)S+s+S+) s+[((?#огноо ба цаг)[^]]+)]s+"(?:GET|POST|HEAD) ((?#файл)[^ ?"]+)??((?#параметр)[ ^?"]+)? HTTP/+"s+(?#status code)404s+((?#байт шилжүүлсэн)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#хэрэглэгчийн агент) )[^"]*)"$"

Давхар хашилтыг ухаалаг ишлэлээр солих

Хэрэв та хэвлэх урлаг сонирхдог бол ердийн давхар хашилтыг ухаалаг ишлэлээр сольдог энэхүү тогтмол хэллэг танд таалагдах болно. Үүнтэй төстэй тогтмол илэрхийлэлийг 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="Инээмсэглэсэн текст:-)"; echo str_replace(":-)"," ",$ text);

Таны хөтөч дээр JavaScript блоклогдсон байна. Сайтыг ажиллуулахын тулд JavaScript-г идэвхжүүлнэ үү!

зурвас_шошго

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

зурвас_шошго- Мөрөөс HTML болон PHP хаягуудыг устгана

Тодорхойлолт

мөр зурвас_шошго(string str [, string зөвшөөрөгдөх_tags])

Энэ функц нь HTML болон PHP хаягуудыг устгасан str мөрийг буцаана. Шошгуудыг арилгахын тулд функцэд ашигласантай төстэй автомат машин ашиглана уу fgetss().

Нэмэлт хоёр дахь аргументыг арилгаж болохгүй шошгыг зааж өгөх боломжтой.

Сэтгэгдэл:Зөвшөөрөгдсөн_tags аргументыг PHP 3.0.13 болон PHP 4.0b3 дээр нэмсэн. PHP 4.3.0-аас эхлэн HTML тайлбарыг мөн устгасан.

Анхаар

Учир нь strip_tags() HTML кодын зөв эсэхийг шалгахгүй байх нь бүрэн бус шошго нь шошгонд ороогүй текстийг устгахад хүргэдэг;

Жишээ 1: Хэрэглээний жишээ strip_tags()
$текст = "

Догол мөр.

Бага зэрэг текст"; echo strip_tags($text); echo "\n\n-------\n"; // бүү устга

Echo strip_tags($текст, "

"); // Зөвшөөрөх ,,echo strip_tags($текст, " ");

Энэ жишээ гаргана:

Догол мөр. Өөр хэдэн текст -------

Догол мөр.

Өөр хэдэн текст

Анхаар

Энэ функц нь зөвшөөрөгдөх_tags аргумент дээр заасан шошгуудын шинж чанаруудыг өөрчлөхгүй, үүнд хэв маяг, хулгана дээр дарах зэрэг орно.

PHP 5.0.0 хувилбараас strip_tags()өгөгдлийг хоёртын хэлбэрээр боловсруулахад аюулгүй.

Энэ функц нь мэдэгдэхүйц сул талтай - шошгыг арилгахдаа үгсийг хооронд нь наадаг. Үүнээс гадна функц нь сул талуудтай. strip_tags-тэй төстэй өөр функц:

c" * - "бохир" html нь шошгоны шинж чанарын утгуудад тэмдэгтүүд байж болох үед зөв боловсруулагдсан< >* - эвдэрсэн html зөв боловсруулагдсан * - тайлбар, скрипт, хэв маяг, PHP, Perl, ASP код, MS Word шошго, CDATA хасагдсан * - текст html код агуулсан бол автоматаар форматлагдана * - хуурамч зүйлээс хамгаалах: "<скрипт>сэрэмжлүүлэг("Сайн уу") script>" * * @param string $s * @param array $allowable_tags Хасагдахгүй шошгуудын массив * Жишээ: "b" -- шошго нь шинж чанаруудтай " " -- шошго нь шинж чанаргүй хэвээр байх болно * @param bool $is_format_spaces Зай болон мөр таслахыг форматлах уу? * Гаралтын текст (энгийн) нь хөтөч дээрх оруулах тексттэй аль болох ойрхон байна. * Өөрөөр хэлбэл энэ нь текстийг зөв хөрвүүлдэг. /html-ээс текст/plain. * Текстийг зөвхөн ямар нэгэн шошго хайчилж авсан тохиолдолд форматлана. Хосолсон шошгын нэрсийн массив, тэдгээрийг догол мөр гэж үзэх болно (хэрэв $is_format_spaces = үнэн бол) * өгөгдмөлүүдийг харах * @return string * * @license http://creativecommons.org/licenses/by-sa/3.0/ * @author Насибуллин Ринат, http: //orangetie.ru/ * @charset ANSI * @version 4.0.14 */ функц strip_tags_smart(/*string*/ $s, массив $allowable_tags = null, /*boolean*/ $is_format_spaces = үнэн, массив $pair_tags = массив ("скрипт", "загвар", "газрын зураг", "iframe", "frameset", "объект", "аплет", "тайлбар", "товчлуур", "textarea", "сонгох"), массив $para_tags = array("p", "td", "th", "li", "h1", "h2", "h3", "h4", "h5", "h6", "div", "хэлбэр", "гарчиг", "pre")) ( // strip_tags($s) буцаана); статик $_callback_type = худал; статик $_allowable_tags = массив(); статик $_para_tags = массив(); Нэг байт эсвэл олон байт UTF-8 тэмдэгт дэх бохир, эвдэрсэн HTML процессуудыг # зөв ​​хэрэглэх хаягийн шинж чанаруудын илэрхийлэл! статик $re_attrs_fast_safe = "(?!) #зөв шинж чанарууд (?> [^>"\"]+ | (?)<=[\=\x20\r\n\t]|\xc2\xa0) "[^"]*" | (?<=[\=\x20\r\n\t]|\xc2\xa0) \"[^\"]*\")* #incorrect attributes [^>]*+"; if (is_array($s)) ( if ($_callback_type === "strip_tags") ( $tag = strtolower($s); if ($_allowable_tags) ( #tag with attributes if (array_key_exists($) tag, $_allowable_tags)) буцаах $s #tag хэрэв (массив_түлхүүр байгаа бол ("<" . $tag . ">", $_allowable_tags)) ( if (substr($s, 0, 2) === ""; хэрэв (substr($s, -2) === "/>") буцаана "<" . $tag . " />"; буцах"<" . $tag . ">"; ) ) хэрэв ($tag === "br") буцаана "\r\n"; хэрэв ($_para_tags && array_key_exists($tag, $_para_tags)) "\r\n\r\n" буцаана; буцах "");<")) === false || strpos($s, ">", $pos) === худал) # хурдыг сайжруулах ( # шошго олдсонгүй $s буцаана; ) $length = strlen($s); #хослогдоогүй шошгууд (нээх, хаах, !DOCTYPE, MS Word нэрийн зай) $re_tags = "~:*+)?) #1 " . $re_attrs_fast_safe . " > ~sxSX"; $patterns = массив("/<([\?\%]) .*? \\1>/sxSX", # embedded PHP, Perl, ASP код"/<\!\\]>/sxSX", #CDATA блокууд #"/<\!\[ [\x20\r\n\t]* .*? \]>/sxSX", #: ХУГАЦААГҮЙ: MS Word хаягууд гэх мэт... "/<\!--.*?-->/sSX", #сэтгэгдэл #MS Word " гэх мэт хаягууд...", #IE төрлийн нөхцөлт кодыг гүйцэтгэх " HTML " #IE төрлийн нөхцөлт кодын гүйцэтгэл "HTML" # http://www.tigir.com/comments.htm-г үзнэ үү "/<\! (?:--)?+ \[ (?>[^\]"\"]+ | "[^"]*" | \"[^\"]*\")* \] (?:--)?+ > /sxSX",); if ($pair_tags) ( #хосолсон шошго агуулгын хамт: foreach ($ pair_tags as $k => $v) $pair_tags[$k] = preg_quote($v, "/");<((?i:" . implode("|", $pair_tags) . "))" . $re_attrs_fast_safe . "(? .*? <\/(?i:\\1)" . $re_attrs_fast_safe . ">/sxSX"; ) #d($patterns); $i = 0; #гогцооны хамгаалалт $max = 99; while ($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; завсарлага; ) ) Хэрэв ($зөвшөөрөгдсөн_tags) $_allowable_tags = таслагдахгүй хаягуудын массив array_flip ($зөвшөөрөгдсөн_tags); хэрэв ($para_tags) $_para_tags = array_flip($para_tags) )#if #tags боловсруулж байгаа бол ($is_html) ( $_callback_type = "strip_tags"); ; = preg_replace_call($re_tags, __FUNCTION__, $s2); if (preg_last_error() !== PREG_NO_ERROR) ( $s = завсарлага); s = $s2; $i++; = = $length) ( #давхардсан хоосон зайг арилгах $s = preg_replace("/\x20\x20++/sSX", " ", trim($s)); #шинэ мөрийн өмнө болон хойно хоосон зай арилгах $s = str_replace( массив ("\r\n\x20", "\x20\r\n"), "\r\n", $s #3 ба түүнээс дээш шинэ мөрүүдийг 2 шинэ мөр болгон солих $s = preg_replace("/); [ \r\n](3,)+/sSX", "\r\n\r\n", $s); ) $s буцаана; ) ?>

Мөн функцийн тайлбарыг үзнэ үү