Ev / internet / Php düzenli ifadeleri preg eşleşmesi. Php'de düzenli ifadeler. Çift tırnak işaretini akıllı tırnak işaretleri ile değiştirme

Php düzenli ifadeleri preg eşleşmesi. Php'de düzenli ifadeler. Çift tırnak işaretini akıllı tırnak işaretleri ile değiştirme


Çok güçlü ve kullanışlı özelliklerden biri PHP dili- düzenli ifadeler için destek. Hem yeni başlayanlar hem de oldukça deneyimli olan birçok programcı, düzenli ifade dilinin görünürdeki karmaşıklığı ve karmaşıklığı karşısında korkuya kapılıyor. Ama sizi temin ederim ki buna değer. Düzenli ifadelerin kullanılması, metinlerin ve zayıf yapılandırılmış verilerin işlenmesi işini büyük ölçüde basitleştirir.


Düzenli ifadeler özel bir dilde yazılan ifadelerdir. Endişelenmeyin, dilin anlaşılması oldukça kolaydır; ihtiyacınız olan tek şey deneyim ve pratiktir.


Sanırım metninizin olduğu durumlarla defalarca karşılaştınız (örneğin, Microsoft Word) ve içinde önemli bir şey bulmanız gerekiyor. Tam olarak ne aradığınızı biliyorsanız, her şey basittir: arama iletişim kutusunu açın, arama kelimesini girin, düğmeye basın ve işte - metin bulundu.


Ancak yalnızca aradığınız bilgi türünü önceden biliyorsanız ne yapacaksınız? Örneğin tüm adresleri bulma göreviyle karşı karşıyasınız E-posta birkaç yüz sayfalık bir belgede. Bazıları belgeyi manuel olarak görüntüleyecek, bazıları aramaya köpeği (@) girip onu arayacak. Katılıyorum - her iki seçenek de yıpratıcı, nankör bir iştir.

Düzenli ifadelerin kurtarmaya geldiği yer burasıdır. Bir miktar yaklaşımla, düzenli ifadeler metin üzerine bindirilen maskeler veya şablonlarla karşılaştırılabilir: eğer metin maskeyle eşleşiyorsa, o zaman bu istenen parçadır. Ancak düzenli ifadelerin kullanımına geçmeden önce sözdizimlerine aşina olacağız.

Düzenli ifade, belirli yasa ve kurallara göre oluşturulmuş bir metin dizesidir. Bir dize, karakterlerden ve karakter gruplarından, meta karakterlerden, niceleyicilerden ve değiştiricilerden oluşur.

İçindeki sembollerin altında bu durumda herhangi bir alfabenin herhangi bir sembolü anlaşılır. Ve sadece okunabilir olanlar değil. Bir ifadeye kolayca okunamayan bir karakter ekleyebilirsiniz; bunu yapmak için yalnızca onaltılık biçimdeki kodunu bilmeniz gerekir. Örneğin:

// okunabilir karakterler a E // okunamayan karakterler ve kodlar \x41 - "A" harfiyle aynı \x09 - sekme karakteri

Bir karakter grubu sırayla yazılan birkaç karakterden oluşur:

Abvg ACZm'ler

Hemen dikkatinizi çekmek isterim; düzenli ifadelerde “boşluk” da önemli bir karakter olarak kabul edilir, bu nedenle ifadeleri yazarken dikkatli olun. Örneğin, bu karakter grupları FARKLI ifadelerdir:

ABC NEREDE ABC NEREDE

Dilin bir sonraki öğesi meta karakterlerdir. "Meta" öneki, bu sembollerin başka bazı sembolleri veya gruplarını tanımladığı anlamına gelir. Tabloda normal ifade dilinin ana meta karakterleri açıklanmaktadır:

Özel karakterleri belirtmek için meta karakterler
() Parantez. İç içe geçmiş ifadeleri tanımlar.
| Seçim meta karakteri
^ Satır meta karakterinin başlangıcı
$ Satır sonu meta karakteri
\N Satır besleme karakteri (onaltılık kod 0x0A)
\R Satır başı karakteri (onaltılık kod 0x0D)
\T Sekme karakteri (onaltılık kod 0x09)
\xhhh Onaltılı kod 0xhh olan bir karakter eklenirse, örneğin \x42 Latin harfi "B" eklenecektir
Karakter gruplarını belirtmek için meta karakterler
. Nokta. Herhangi bir karakter.
\D Hane (0-9)
\D Sayı değil (0-9 karakterleri dışında herhangi bir karakter)
\S Boş karakter (genellikle boşluk ve sekme)
\S Boş olmayan karakter (\s meta karakteriyle tanımlanan karakterler hariç tümü)
\w Bir "sözlük" karakteri (kelimelerde kullanılan bir karakter. Genellikle tüm harfler, tüm sayılar ve bir alt çizgi ("_"))
\W \w meta karakteriyle tanımlanan karakterler dışındaki tüm karakterler

Tablonun ikinci yarısındaki meta karakterlerin hatırlanması çok kolaydır. "d" - rakam (rakam), "s" - sembol (sembol), "w" - kelime (kelime). Harf büyükse grup açıklamasına "DEĞİL" eklemeniz gerekir.

Örneğin “Kırmızı formanın numarası 1812, yeşil formanın numarası 2009” metnini ele alalım. En basit düzenli ifadelerin örneklerine bakalım:

\d\d\d\d - 1812 ve 2009'u bulacaktır \D - tüm harfleri, boşlukları ve noktalama işaretlerini bulacaktır \s - metindeki tüm boşlukları bulacaktır.

Ancak örneğimizdeki yıl dört değil iki rakamla yazılabilir, kelimelerin başka çekimleri olabilir, vb. Köşeli parantez kullanılarak belirtilen karakterlerin alt kümeleri burada yardımcı olabilir:

Herhangi bir rakam anlamına gelir (\d ile aynı) - çift rakam anlamına gelir - Latin alfabesinin herhangi bir sembolü (her durumda) veya rakam anlamına gelir.

Örneğin, test dizesindeki \d\d\d ifadesi yalnızca 1812'yi bulacaktır, ancak 2009'u bulamayacaktır. Bu ifade, "son rakamı 0,2,4,6 veya 0,2,4,6 olan dört basamaklı tüm dizileri bul" şeklinde okunmalıdır. 8."

Bahsetmemiz gereken tek şey niceleyiciler ve değiştiricilerdir.

Niceleyici, bir karakterin veya karakter grubunun kaç kez görünmesi gerektiğini belirleyen özel bir yapıdır. Nicelik belirteci küme parantezleri "()" içinde yazılmıştır. İki kayıt formatı mümkündür: hassas ve aralık. Tam format şu şekilde yazılmıştır:

Burada X, önceki sembolün veya grubun tekrarlanması gereken sayıdır. Örneğin ifade

İkinci kayıt şekli aralıktır. Olarak kaydedildi

(X, Y) // veya (,Y) // veya (X,)

burada X minimum ve Y maksimum tekrar sayısıdır. Örneğin:

"sırayla yazılmış iki ila dört rakam" olarak okunur. Sınırlardan biri belirtilmezse sınırlama olmadığı varsayılır. Örneğin:

\w(3,) - üç veya daha fazla harf. \d(,5) - hiç sayı yok veya var ama beşten fazla değil.

Niceleyiciler tek bir karaktere veya bir gruba uygulanabilir:

[A-Yaa-ya](1,3)

Bu yapı, bir, iki veya üç harfli tüm Rusça kelimeleri metinden seçecektir (örneğin, "veya", "değil", "ben", "gidiyorum" vb.).

Kıvrımlı ayraçlara ek olarak üç nicelik belirteci meta karakteri daha vardır: “*” (yıldız işareti), “+” (artı) ve “?” (soru). Gerekli minimum ve maksimum tekrar sayısının önceden bilinmediği durumlarda kullanılırlar. Örneğin, e-posta adreslerini ararken, kullanıcı adında kaç karakter olacağını ("köpek"ten önce) ve alan adında kaç karakter olacağını ("köpek"ten sonra) önceden söyleyemezsiniz.

"*" meta karakteri "sıfırdan veya daha fazlasından herhangi bir miktar" olarak okunur, yani. tasarım

tam yoklukları da dahil olmak üzere herhangi bir sayıda ardışık harfi tanımlar.

"+" sembolü yıldız işaretinden yalnızca en az bir karakter gerektirmesi açısından farklılık gösterir. Onlar. tasarım

herhangi bir dijital diziyi bir veya daha fazla rakamla eşleştirir.

Sembol "?" tek bir karakterin yokluğu veya varlığıyla eşleşir. Onlar. tasarım

bir veya iki rakamlı herhangi bir dijital diziyi eşleştirir.

Burada “*” ve “+” karşıtlarının açgözlülük gibi bir özelliğinden bahsetmeye değer. Buradaki önemli nokta, varsayılan olarak bu karakterlerin mümkün olan en uzun karakter dizisine karşılık gelmesidir. Örneğin “anne çerçeveyi yıkadı” satırı için şu ifade:

"mama sabunu ra"yı seçeceğiz ki bu biraz beklenmedik bir durum çünkü "ma" almayı bekliyorduk. Bu davranışı değiştirmek için "?" meta karakterini kullanın. (soru işareti) niceleyiciden hemen sonra yazılır. Niceleyicilerin "iştahını", onları en uzun eşleşme yerine ilk eşleşmeyi geri getirmeye zorlayarak sınırlandırır. Şimdi önceki örneği değiştirelim:

ve gerekli "ma" eşleşmesini elde edin.

Dilin son öğesi değiştiricilerdir. Değiştirici, düzenli ifadeleri analiz etmek için "sistem" parametrelerini tanımlayan özel bir karakterdir. Bu tür yalnızca dört sembol vardır; bunlar tek tek veya aynı anda kullanılabilir:

Ben Büyük/küçük harfe duyarlı olmayan modu etkinleştirir; ifadede büyük ve küçük harfler farklılık göstermez.
M Aranan metnin birden fazla satırdan oluşuyormuş gibi değerlendirilmesi gerektiğini belirtir. Varsayılan olarak, normal ifade motoru, gerçekte ne olduğuna bakılmaksızın metni tek bir dize olarak ele alır. Buna göre "^" ve "$" meta karakterleri tüm metnin başlangıcını ve sonunu belirtir. Bu değiştirici belirtilirse, sırasıyla metnin her satırının başlangıcını ve sonunu göstereceklerdir.
S Varsayılan meta karakter "."'dir. tanımına yeni satır karakterini dahil etmez. Onlar. çok satırlı metin için /.+/ ifadesi beklendiği gibi metnin tamamını değil yalnızca ilk satırı döndürür. Bu değiştiricinin belirtilmesi bu sınırlamayı ortadan kaldırır.
sen Tüm niceliksel meta karakterleri varsayılan olarak "açgözlü olmayan" yapar. Dilin bazı modifikasyonlarında (özellikle PHP'de), "U" yerine, anlamıyla daha tutarlı olan "g" karakteri kullanılır ("g", İngilizce "açgözlü", "açgözlü" kelimelerinin kısaltmasıdır). ).

Tablo, düzenli ifadelerin en popüler ve gerekli örneklerini göstermektedir. Bazıları size karmaşık ve hantal görünebilir, ancak detaylı bir çalışmayla şüphesiz anlayacaksınız.

PHP'de düzenli ifadeler.

PHP'de düzenli ifadelerle çalışmak için özel işlevler vardır; bunların listesi Kısa Açıklama tabloda verilmiştir:

int preg_match (dize modeli, dize konusu [, dizi eşleşmeleri])

İşlev, konunun içeriğinin desen deseniyle eşleşip eşleşmediğini kontrol eder. Eşleşme bulunursa 1 değerini döndürür, aksi takdirde 0 değerini döndürür. İsteğe bağlı eşleşme dizisi parametresini belirtirseniz, işlev yürütüldüğünde, içine tek bir öğe girilecektir - bulunan ilk eşleşme.

int preg_match_all (dize modeli, dize konusu, dizi eşleşmeleri [, int sırası])
İşlev öncekiyle aynıdır, tek farkla tüm metni arar ve eşleşmeler dizisinde bulunan TÜM eşleşmeleri döndürür.
karışık preg_replace (karışık model, karışık değiştirme, karışık konu [, int limit])
Önceki her iki işlev gibi preg_replace de bir kalıpla eşleşen bir metin parçasını arar. İşlev, bulunan tüm parçaları parametrelerde belirtilen metinle değiştirir.
karışık preg_replace_callback (karışık model, karışık geri arama, karışık konu [, int limit])
İşlev, öncekinin genişletilmiş bir sürümüdür. Temel fark, bu işlevin, metni analiz edecek ve yeni metin oluşturacak işlevin adını parametrelere iletmesidir.
dizi preg_split (dize modeli, dize konusu [, int limit [, int bayrakları]])
Bu işlev, patlayıcı() ve split() işlevlerine benzer. Özelliği, ayırıcının sabit bir dize değil, düzenli bir ifade olmasıdır. İşlev, kaynak verilerini öğelere böler ve bunları çıktı dizisine yerleştirir.
dizi preg_grep (dize deseni, dizi girişi)
İşlev, dizilerde düzenli arama yapmak için tasarlanmıştır. Arama için bir şablon ve girdi verileri dizisi belirtilir ve yalnızca şablonla eşleşen öğelerden oluşan bir dizi döndürülür.

Dikkate alınan işlevlerin listesi tam olmaktan uzaktır, ancak düzenli ifadelerle çalışmaya başarılı bir başlangıç ​​için oldukça yeterlidir. Bu konuyla ilgileniyorsanız, ek literatürü okuduğunuzdan emin olun (örneğin, Friedl’in “Düzenli İfadeler” kitabı). Ayrıca, eğitim amacıyla aşağıdakilerden birini yüklemenizi öneririm. özel programlar normal ifadeleri test etmek için (örneğin, "PCRE" veya "RegEx Builder").

Düzenli ifadenin ne olduğuyla başlayalım. O halde bana şu soruyu cevapla: "test" kelimesinde "e" var mı? "Yemek yemek!" diyorsun. O zaman size ikinci bir soru soruyorum, "test" kelimesindeki "e" harfini nasıl buldunuz? Cevap belli, ilk karakter olan “t”yi alıp aradığımız şeyle yani “e” ile karşılaştırıyoruz. Eşit değillerse ikinci karakter olan “e”yi alıp aradığımız karakter olan “e” ile karşılaştırırız. İşte! Bir eşleşme bulundu. Cevap: "Test" kelimesi "e" harfini içermektedir.

Şimdi bana bir soru daha cevapla, bu örnekte düzenli ifade nerede? Umarım buradaki normal ifadenin "test" kelimesinde aradığımız şey olduğunu tahmin etmişsinizdir. Yani bu örnekteki "e" harfi bir düzenli ifadedir.

PHP'de düzenli ifadeler ne için kullanılır? Uygulamamda, örneğin bir e-posta adresinin doğru şekilde oluşturulup oluşturulmadığını belirlemek için normal ifadeler kullanıldı. Bu tür ifadeler aynı zamanda kullanıcı adı ve şifrenin doğruluğunu belirlemek için de kullanılır. Normal ifadeleri kullanarak adresi bir bağlantıda bulabilir ve kaydedebilirsiniz. Yapabileceğiniz birçok şey var. Bunu analiz ederek normal ifadelerin ana işlevini ve iki yan işlevini tanımlayabilirsiniz. Ana işlev, bu bir dizedeki eşleşmelerin aranmasıdır. Yan etkiler arasında bulunan eşleşmelerin kaydedilmesi ve değiştirilmesi yer alır.

İlk düzenli ifade

Teorik olarak “test” kelimesindeki “e” karakterini nasıl bulacağımızı anlıyoruz ama bu pratikte nasıl uygulanıyor? Php'de normal ifadeleri kullanmak için genellikle aşağıdaki işlevler kullanılır:

preg_match("normal ifade (örüntü)", "aramanın gerçekleştirildiği değişken", "Arama sonucunun kaydedildiği değişken (isteğe bağlı parametre)"); - Eşleştirme işlevi
preg_replace("normal ifade (örüntü)", "Bulunan eşleşme neyle değiştirilecek", "değiştirmenin yapılacağı değişken"); - İşlevi değiştir

Bu işlevleri kullanmaya başlayalım. Aşağıda "test" sözcüğünde "e" karakterini aramanın bir örneği verilmiştir:

$a = "test";
if(preg_match("/e/",$a)) echo "bulundu!!";

Kod durumu açıklar: $a değişkeninde kalıpla eşleşen bir şey bulunursa, "bulundu!!" mesajını görüntüleyin. Fark ettiğiniz gibi şablonumuz iki "/" arasında yer alıyor. Bu durumda "/" sembolü desenimizin başlangıcını ve sonunu simgelemektedir. Umarım açık olmuştur.

Bütün bunlar elbette ilginç… ama şablonumuz çok basit, öyle değil mi? Sonuçta nadiren bir değişkende bir sembol bulmamız gerekir. Çoğu durumda, birçok karakterin yanı sıra bilinmeyen karakterleri de bulmamız gerekir. Nasıl olunur? Kendimize bir sorun belirleyelim ve çözmeye çalışalım. Rakamlardan ve bilinmeyen bir İngilizce harften oluşan bir dizimiz olduğunu varsayalım.

Bu mektubu nasıl bulabilirim? İngiliz alfabesinde herhangi bir harf olabilir, peki onu nasıl tanımlayabilirsiniz? Sorunuzu kendiniz cevapladınız, herhangi bir harf var, yani a'dan z'ye kadar. Aralıkları normal ifadelerde kullanabilirsiniz. Hangi karakteri aradığımızı bilmiyorsak ancak bu karakterin İngiliz alfabesinin bir harfi olduğundan eminsek, giriş şu şekilde olacaktır:

$a = "123a321";
if(preg_match("//",$a)) echo "bulundu!!";

Aralığın "[" "]" parantezleri içine alındığını unutmayın. Bu parantezlerin içine alınan her şey tek bir karakter olarak tanımlanır; bu durumda karakter a'dan z'ye kadar değişir. Bir harf değil bir sayı bulmamız gerekirse, giriş şöyle olacaktır:

$a = "abc1cba";
if(preg_match("//",$a)) echo "bulundu!!";

Ayrıca normal ifadelerin büyük/küçük harfe duyarlı olduğunu, dolayısıyla “A” ve “a” karakterlerinin tamamen farklı olduğunu da belirtmek isterim; her iki karakteri de aramak için şu şekilde yazın:

$a = "123a321";
if(preg_match("//",$a)) echo "bulundu!!";

İngilizce harflerle aynı şekilde gerçekleştirilen Rusça harfler için de bir arama var:

$a = "123×321";
if(preg_match("/[a-zA-Z]/",$a)) echo "bulundu!!";

Metakarakterler

Bir dizide bilinmeyen bir karakteri nasıl arayacağımızı öğrendik. Birkaç karakter bulmamız gerekirse ne yapmalıyız? Sözde metasemboller imdadımıza yetişiyor... Diyelim ki elimizde rakam ve harflerden oluşan bir dizi var, bunu şablonda nasıl anlatabiliriz? Bunu yapabilirsiniz:

satır - 123a321
örnek -

Hmm... şablon aslında bizim dizemizle eşleşiyor ve uyumluluk açısından kontrol edildiğinde uzun zamandır beklenen gerçeği verecek! Ama bu biraz hantal bir kayıt, sence de öyle değil mi?

Bunu nasıl kısaltacağınız aşağıda açıklanmıştır:

satır - 123a321
örnek - *

Bana öyle geliyor ki daha kısa. “*” Sembolü nedir? Bu aynı metasemboldür, yani tanımladığımız sembolün (yani 0'dan 9'a kadar sayıları veya İngiliz alfabesinin a'dan z'ye harflerini içerebilen bir sembol) süresiz olarak veya birden fazla tekrarlanabileceği anlamına gelir. Evet evet! Bu metasembol boş bir değişkende bir eşleşme bulacaktır, çünkü tanımladığımız sembolün yokluğu bile doğru olacaktır! Hatırla bunu

Başka hangi meta karakterler var?

Örneğin, meta karakter "+" Küçük bir istisna dışında "*" meta karakterine neredeyse benzer. "*", hiçbir karakter olmasa bile true değerini döndürür ve "+", en az bir karakterin varlığını kontrol eder. Yani, bir satır en az bir karakter gerektiriyorsa “*” yerine “+” kullanın

Meta karakter "?" de sıklıkla kullanılır. Bu, satırın birden fazla istenen karakter içermemesi gerektiği anlamına gelir. Son anlattığım iki meta karakter için birkaç örnek vereyim.

Kullanıcının şifresinin doğruluğunu kontrol etmemiz gerektiğini varsayalım. Kullanıcı şifresinin ne içermesi gerektiğini düşünelim mi? Öncelikle en az bir karakter olmalı. İkinci olarak, yalnızca İngiliz alfabesinin rakamlarını ve harflerini içermelidir, böylece normal ifade şu şekilde görünecektir:

$a = "qwerty12345";

Hangi karakterlere izin veriyoruz? Her durumda ve sayıdaki İngilizce harfler. Şimdi şifre yerine boş bir satır bırakmayı deneyin.

$bir = "";
if(preg_match("/+/",$a)) echo "Şifre doğru";

“Şifre doğru” mesajını görmezsiniz. Neden? Çünkü "+" meta karakteri, dizede en az bir karakter olup olmadığını kontrol etti.

Şimdi biraz hile yapalım, ifademize bir bakalım, izin vermedik, peki içinde boşluk diyelim değil mi? şifrenin sonuna boşluk koyup çalıştırın

$a = "qwerty12345";
if(preg_match("/+/",$a)) echo "Şifre doğru";

Peki neden doğru şifreyle ilgili mesajımızı görüyoruz? Oldukça basit... Function preg_match(); ilk maçta kontrolünü durdurur. Yani “q” sembolü tanımladığımız kalıba uyuyor ve geri kalan her şey artık fonksiyon için önemli değil. Bunu nasıl düzelteceğiniz aşağıda açıklanmıştır:

$a = "qwerty12345";
if(preg_match("/^+$/",$a)) echo "Şifre doğru";

Bir ifadenin başına "^" ve sonuna "$" ekleyerek, fonksiyona dizenin tamamının kalıpla eşleşmesi gerektiğini söyleriz. Bu kodu çalıştırırsanız, şifrenin sonunda geçersiz bir karakter (boşluk) olduğundan mesajı görmezsiniz.

Şimdi "+" meta karakterini "?" meta karakterine değiştirin. Ne olacağını düşünüyorsun? Doğrudur, şifre birden fazla karakter içerdiğinden şifrenin doğruluğuna dair bir mesaj olmayacaktır. Umarım bu sık kullanılan üç meta karakterin çalışmasını doğru bir şekilde açıklamışımdır.

Bazen "değil" daha iyidir

En azından şifrenin doğruluğunu nasıl kontrol edeceğimizi öğrendik ve bu iyi bir şey! Size bir dizedeki bir şeyi aramanın başka bir yolundan bahsedeyim. Diyelim ki bir dizede sayıların yokluğunu kontrol etmemiz gerekiyor. Nasıl yapılır? İşte satır:

(Hayat bal gibi görünmesin diye içine özellikle bu “-_+()” sembollerini ekledim...) Aşağıdaki ifadeyi formüle edebiliriz:

Ancak itiraf etmelisiniz ki, bir satırda hangi karakterlerin kullanıldığını her zaman bilemiyoruz, ancak içinde sayıların olmaması gerektiğini kesinlikle biliyoruz! Bu nedenle “Aman Tanrım, ne kadar anlaşılmaz karakter!!!” içerenleri değil, sayı içermeyen satırları atlayacak bir şablon yazmak daha mantıklı olacaktır. . Bu tür problemler için doğru şekilde oluşturulmuş bir ifadenin bir örneği:

$a = "a-_+()";
if(preg_match("/^[^0-9]+$/",$a)) echo "Sayı yok!";

Bunu nasıl başardık? Sembole girdik ama! başındaki "^" ([^0-9]) harfi bu karakterin satırda olmaması gerektiğini gösteriyor umarım bu sorun giderilmiştir.

Pekala, yavaş yavaş toparlayalım... Açıklamalı iki örnek vereceğim; bu sırada arama sonucunu bir değişkene nasıl kaydedeceğimizi ve posta adresinin doğruluğunu nasıl kontrol edeceğimizi öğreneceğiz.

Gördüm ve kurtardım!

Bloğum

$a = " Bloğum";
preg_match("/ /", $a);

Normal ifademizde bir bağlantıya eklenebilecek tüm olası karakterleri tanımladık. Ayrıca ifademizdeki alıntı ve “/” karakterlerine de dikkat çekmek istiyorum. Başlarında ters eğik çizgi var, ne işe yarıyor? Gerçek şu ki, "/" ve alıntının kendisi özel karakterlerdir. Ve şablonun bunları sıradan semboller olarak algılaması için onları taramamız gerekiyor. Kaçış, özel karakterlerden önce ters eğik çizgi eklenerek yapılır. umarım açıktır

$a = " Bloğum";
preg_match("/ /", $a, $b);

Buna göre, bulunan bağlantının saklanacağı $b değişkeni biçiminde ek bir parametre eklemek gerekir. Ayrıca arama sonucunun bir diziye yerleştirildiğini de bilmeniz gerekir. Bu nedenle $b değişkeni bir dizidir. Aradığımız bilgi indeks 1'in altındadır. Bu, arama sonucunun $b değişkeninde olduğu anlamına gelir. Sonucu ekranda gösterelim:

$a = " Bloğum";
preg_match("/ /", $a, $b);
yankı $b;

Doğru adres başarının anahtarıdır!

Ve son olarak sorunun cevabı; e-posta doğru mu? Öncelikle adreslerde hangi karakterlere izin verildiğini bulmanız gerekiyor? Bildiğim kadarıyla izin verilen karakterler şunları içeriyor:

  • İngilizce harfler, rakamlar, “_”, “-” hmmmm her şey öyle görünüyor... Bundan devam edeceğiz.
  • Sonra "@" var
  • Daha sonra İngilizce harfler
  • Sonraki periyot
  • Ve yine İngilizce harfler...

Yani düzenli ifade şu şekilde olacaktır:

$a = " [e-posta korumalı]";
if(preg_match("/^+@+.+$/", $a)) echo "e-posta adresi doğru!";
else echo "e-posta adresi doğru YAZILMAMIŞ!";

Peki... Umarım bu tür kayıtlar artık sizi korkutmuyordur ve bunları oldukça anlayabilirsiniz.

Son olarak bir şey söylemek istiyorum. Makalenin hantal olduğu ortaya çıktı ve aynı zamanda olasılıkların yalnızca bir kısmını kapsıyordu. Bu cümleyi okuyorsanız, büyük olasılıkla sonuna kadar okudunuz, bunun için çok teşekkür ederim.

Cms blogunun geliştirilmesine ilişkin makale dizisine gelince, serinin ilk bölümünün kapandığını ilan ediyorum! Yakın gelecekte yönetici panelini uygulamaya başlayacağız, bu nedenle "geçiş yapmayın". Sorularınız varsa yanıtlamaktan memnuniyet duyarım. Size en iyi dileklerimle, hepsi benden!

Düzenli ifadeler, bir dizede bir kalıpla eşleşen dizileri bulmanızı sağlar. Örneğin, “Vasya(.*)Pupkin” şablonu, Vasya ve Pupkin kelimeleri arasında herhangi bir sayıda karakter bulunduğunda bir dizi bulmanızı sağlayacaktır. Altı rakam bulmamız gerekiyorsa “(6)” yazarız (örneğin altı ila sekiz rakam varsa o zaman “(6,8)”). Bu, karakter seti göstergesi ve gerekli sayı göstergesi gibi şeyleri ayırır:

Bir karakter kümesi yerine herhangi bir karakterin tanımı kullanılabilir - bir nokta; belirli bir karakter kümesi belirtilebilir (diziler desteklenir - belirtilen "0-9"). "hariç" ifadesini gösterebilir bu set karakterler".

Resmi PHP belgelerinde karakter sayısına "nicelik belirteci" adı verilir. Terim uygundur ve yanlış anlama taşımaz. Dolayısıyla, bir niceleyici belirli bir değere sahip olabilir - ya bir sabit değer (“(6)”) ya da sayısal bir aralık (“(6,8)”) ya da soyut bir “0 dahil herhangi bir sayı” (“( " *"), "herhangi doğal sayı" - 1'den sonsuza kadar ("+": "document+.txt"), "ya 0 ya da 1" ("?"). Bu karakter kümesi için varsayılan niceleyici birdir ("document.txt").

Kombinasyonlara yönelik daha esnek bir arama için bu "karakter seti - nicelik belirteci" bağlantıları meta yapılar halinde birleştirilebilir.

Herhangi bir esnek araç gibi, düzenli ifadeler de esnektir ancak mutlak değildir: uygulama alanları sınırlıdır. Örneğin, metindeki sabit bir dizeyi başka bir sabit dizeyle değiştirmeniz gerekiyorsa, str_replace komutunu kullanın. PHP geliştiricileri, ereg_replace veya preg_replace gibi karmaşık işlevleri bu amaçla kullanmamanız için gözyaşları içinde yalvarıyorlar, çünkü bunlar çağrıldığında dize yorumlama işlemi gerçekleşir ve bu, sistem kaynaklarını ciddi şekilde tüketir. Ne yazık ki bu, PHP'ye yeni başlayan programcıların favori komisyonudur.

Normal ifade işlevlerini yalnızca orada tam olarak hangi dizenin olduğunu bilmiyorsanız kullanın. Örnekler: hizmet karakterlerinin ve kısa kelimelerin arama dizesinden çıkarıldığı ve ayrıca fazladan boşlukların kesildiği arama kodu (veya daha doğrusu, tüm boşluklar sıkıştırılır: "+" yerine bir boşluk konur). Bu işlevleri kullanarak inceleme bırakan kullanıcının e-postasını kontrol ediyorum. Yapılabilecek çok şey var, ancak düzenli ifadelerin çok güçlü olmadığını akılda tutmak önemlidir. Örneğin, karmaşık bir ikame büyük Metin Bunları yapmamak daha iyidir. Sonuçta, örneğin program terimlerindeki “(.*)” kombinasyonu, metnin tüm karakterlerinin aranması anlamına gelir. Ve eğer şablon satırın başına veya sonuna bağlı değilse, o zaman şablonun kendisi program tarafından tüm metin boyunca "taşınır" ve sonuç çift arama veya daha doğrusu aramanın karesidir. Başka bir “(.*)” kombinasyonunun bir küp üzerinde yineleme anlamına geldiğini vb. tahmin etmek zor değil. Diyelim ki 5 kilobaytlık metnin üçüncü kuvvetini artırın. 125.000.000.000 (kelimelerle: yüz yirmi beş milyar işlem) çıkıyor. Tabii ki, katı bir yaklaşım izlerseniz, çok fazla operasyon olmayacak, ancak dört ila sekiz kat daha az olacak, ancak sayıların sırası önemlidir.

Karakter seti
. noktaherhangi bir karakter
[] köşeli parantezkarakter sınıfı ("herhangi biri"). Örneğin
[^] negatif karakter sınıfı ("herhangi biri hariç")
- kısa çizgibir karakter sınıfında sıra tanımı ("" rakamlar)
\D Sadece sayılar
\D[^0-9] Sayıların yanı sıra
\w Harfler ve sayılar
\W[^a-z0-9]Harf ve sayıların yanı sıra
\S Boşluk karakterleri: boşluk, sekme, yeni satır
\S[^ ] Boşluk karakterleri hariç
| (bir|diğer)Bu yerde listelenen seçeneklerden biri olabilir, örneğin: (Vasya|Petya|Masha). Seçime dahil edilmesini istemiyorsanız (?: ...) kullanın.

Yalnızca birini belirtmek için bir karakter sınıfı kullanmayın ("+" yerine "+" işe yarayacaktır). Karakter sınıfına bir nokta yazmayın; bu herhangi bir karakterdir, o zaman sınıftaki diğer karakterler gereksiz olacaktır (ve negatif sınıf bu, tüm karakterlerin olumsuzlanmasıyla sonuçlanacaktır).

Niceleyici

Bir niceleyici hem belirli bir değeri hem de sınırları gösterebilir. Belirtilen sayı niceleyicinin sınırları dahilindeyse, ifade parçasının ayrıştırılan dizeyle eşleştiği kabul edilir. Sözdizimi:

{ }

{ , }

Yalnızca gerekli minimum değeri belirtmeniz gerekiyorsa ancak maksimum yoksa, virgül koyun ve ikinci sayıyı yazmayın: “(5,)” (“minimum 5”). En sık kullanılan niceleyiciler için özel gösterimler vardır:

Uygulamada bu tür semboller küme parantezlerinden daha sık kullanılır.

Çapalar

Bu karakterler sırasıyla satırın en başında ve en sonunda görünmelidir.

Açgözlülük Soru işareti aynı zamanda niceleyici küçültücü görevi de görür:
.*?

Örneğin sonucu: Açgözlü versiyon: kalın metin [b] ve burada - daha da kalın döndürüldü Tembel versiyon: kalın metin [b] ve burada - daha da kalın döndürüldü

Şablon satırı, daha önce fark ettiğiniz gibi eğik çizgiyle başlar ve biter. İkinciden sonra parametreler var:

Benbüyük/küçük harfe duyarlı olmayan arama
M

çok satırlı mod Varsayılan olarak PCRE yalnızca tek bir satır içindeki kalıp eşleşmelerini arar ve "^" ve "$" karakterleri tüm metnin yalnızca başlangıcı ve sonuyla eşleşir. Bu seçenek ayarlandığında, "^" ve "$" ayrı ayrı satırların başlangıcı ve bitişiyle eşleşir.

Ssembolü "." (nokta) aynı zamanda satır sonuyla da eşleşir (varsayılan hayır)
Ametnin başına bağlantı
e"$" karakterini yalnızca metnin sonuyla eşleşmeye zorlar. m parametresi ayarlanmışsa dikkate alınmaz.
senHer niceleyici için "açgözlü" ifadesini ters çevirir (bir niceleyicinin ardından "?" geliyorsa, o niceleyici artık "açgözlü" değildir).
eDeğiştirilen dize PHP kodu olarak yorumlanır.
Düzenli ifadelerle çalışmaya yönelik işlevler
  • preg_grep
  • preg_match - Eşleşme kontrolü gerçekleştirir Düzenli ifade. Bu işlev yalnızca ilk eşleşmeyi arar!
  • preg_match_all
  • preg_quote - Normal ifadelerdeki karakterlerden kaçar. Onlar. tüm hizmet karakterlerinin önüne eğik çizgi ekler (örneğin, parantez, köşeli parantez vb.) böylece kelimenin tam anlamıyla alınırlar. Herhangi bir kullanıcı girişiniz varsa ve bunu normal ifadeler kullanarak kontrol ediyorsanız, bunu yapmadan önce gelen değişkendeki servis karakterlerinden kaçmak daha iyidir.
  • preg_replace
  • preg_replace_callback - Düzenli ifade araması ve değiştirme işlemini gerçekleştirir
  • preg_split
preg_grep

preg_grep işlevi - Bir kalıpla eşleşen olayların dizisini döndürür

Sözdizimi

dizi preg_grep (dize modeli, dizi girişi [, int bayrakları])

preg_grep(), giriş dizisinin verilen kalıpla eşleşen öğelerinden oluşan bir dizi döndürür.

flags parametresi aşağıdaki değerleri alabilir:

PREG_GREP_INVERT
Bu bayrak ayarlanırsa preg_grep() işlevi bunları döndürür dizi elemanları Verilen desen deseniyle eşleşmeyen.
preg_grep() tarafından döndürülen sonuç, orijinal veri dizisiyle aynı dizinleri kullanır. Bu davranış size uymuyorsa, preg_grep() tarafından yeniden indekslenmek üzere döndürülen dizide array_values() işlevini kullanın.
Basit kod:

// Kayan nokta sayılarını içeren tüm dizi öğelerini döndürür // $fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);

preg_match

preg_match işlevi - Normal ifadeyle eşleşme gerçekleştirir

Sözdizimi

int preg_match (string modeli, string konusu [, dizi eşleşmeleri [, int flags [, int offset]]]) Verilen metin konusunu model modeliyle eşleşmeler için arar

Eğer ek parametre eşleşmeler belirtildiğinde, arama sonuçlarıyla doldurulacaktır. $matches öğesi, dizenin tüm kalıpla eşleşen kısmını içerecektir; $matches, dizenin ilk alt kalıpla eşleşen kısmını içerecektir ve bu şekilde devam eder.

bayraklar aşağıdaki değerleri alabilir:

PREG_OFFSET_CAPTURE

Arama satırın başından itibaren soldan sağa doğru gerçekleştirilir. Arama için alternatif bir başlangıç ​​konumu belirtmek amacıyla isteğe bağlı ofset parametresi kullanılabilir. Konuyu substr())($konu, $offset) ile değiştirerek de benzer bir sonuç elde edilebilir.

preg_match() işlevi, bulunan eşleşmelerin sayısını döndürür. Bu, 0 (hiçbir eşleşme bulunamadı) ve 1 olabilir, çünkü preg_match() ilk eşleşme bulunduktan sonra çalışmayı durdurur. Tüm eşleşmeleri bulmanız veya saymanız gerekiyorsa preg_match_all() işlevini kullanmalısınız. Preg_match() işlevi, yürütme sırasında herhangi bir hata meydana gelirse FALSE değerini döndürür.

Öneri: Belirli bir dizede bir alt dizenin varlığını kontrol etmeniz gerekiyorsa preg_match() işlevini kullanmayın. Görevi çok daha hızlı gerçekleştireceklerinden bunun için strpos() veya strstr()'yi kullanın.

Örnek kod Örnek kod Örnek kod Örneğin sonucu:

alan adı: site

preg_match_all

preg_match_all işlevi - Bir dizede genel bir kalıp araması gerçekleştirir

Sözdizimi

int preg_match_all (dize modeli, dize konusu, dizi eşleşmeleri [, int bayrakları [, int offset]])

Desen modelinin tüm eşleşmeleri için dize konusunu arar ve sonucu, bayrak kombinasyonuna göre belirlenen sıraya göre eşleşmeler dizisine yerleştirir.

İlk eşleşmeyi bulduktan sonra, sonraki aramalar dizenin başından itibaren değil, son bulunan oluşumun sonundan itibaren gerçekleştirilecektir.

İsteğe bağlı flags parametresi aşağıdaki değerleri birleştirebilir (PRG_PATTERN_ORDER ile PREG_SET_ORDER'ı aynı anda kullanmanın anlamsız olduğunu unutmayın):

PREG_PATTERN_ORDER
Bu bayrak ayarlanırsa sonuç şu şekilde sıralanacaktır: $matches öğesi, modelin tam oluşumlarının bir dizisini içerir; $matches öğesi, ilk alt modelin oluşumlarının bir dizisini içerir, vb.

Örnek kod Örneğin sonucu: örnek: , bu bir test örneği: , bu bir test

Görebildiğimiz gibi $out, modelin tam oluşum dizisini içerir ve $out öğesi, etiketlerde bulunan bir dizi alt dizeyi içerir.

PREG_SET_ORDER
Bu bayrak ayarlanırsa sonuç şu şekilde sıralanır: $matches öğesi ilk oluşum kümesini içerir, $matches öğesi ikinci oluşum kümesini içerir vb.

Örnek kod Örneğin sonucu: örnek: , örnek: bu bir testtir, bu bir testtir

Bu durumda, $matches dizisi ilk eşleşme kümesini içerir; yani: $matches öğesi tüm modelin ilk oluşumunu içerir, $matches öğesi ilk alt modelin ilk oluşumunu içerir ve bu şekilde devam eder. Benzer şekilde, $matches dizisi ikinci eşleşme kümesini içerir ve bulunan her eşleşme için bu şekilde devam eder.

PREG_OFFSET_CAPTURE
Bu bayrak belirtilirse, bulunan her alt dizgenin kaynak dizgedeki konumu belirtilecektir. Bu bayrağın döndürülen verinin formatını değiştirdiğini unutmamak önemlidir: her oluşum bir dizi olarak döndürülür, sıfırıncı elemanı bulunan alt dizgeyi içerir ve ilk eleman ofseti içerir.

Bayrak kullanılmaması durumunda varsayılan değer PREG_PATTERN_ORDER'dir.

Arama satırın başından itibaren soldan sağa doğru gerçekleştirilir. Arama için alternatif bir başlangıç ​​konumu belirlemek amacıyla isteğe bağlı ofset parametresi kullanılabilir. Konuyu substr())($konu, $offset) ile değiştirerek de benzer bir sonuç elde edilebilir.

Bulunan modelin tekrarlanma sayısını (sıfır olabilir) veya yürütme sırasında herhangi bir hata meydana gelmişse FALSE değerini döndürür.

Örnek kod Örnek kod Örneğin sonucu: eşleşti: kalın metin bölüm 1: bölüm 2: kalın metin bölüm 3: eşleşti: beni tıkla Bölüm 1: 2. bölüm: beni tıkla 3. bölüm: hamile_alıntı

preg_quote işlevi - Normal ifadelerdeki karakterlerden kaçar

Sözdizimi

string preg_quote (string str [, string sınırlayıcı])

preg_quote() işlevi str dizesini alır ve her özel karakterden önce bir ters eğik çizgi ekler. Şablon, değeri betiğin çalışması sırasında değişebilecek dize değişkenlerinden oluşuyorsa bu yararlı olabilir.

Ek sınırlayıcı parametresi belirtilirse, bu parametreden de çıkış yapılır. Bu, PCRE işlevlerinde kullanılan sınırlayıcıdan kaçmak için kullanışlıdır. En yaygın sınırlayıcı "/" karakteridir.

Normal ifadelerde aşağıdaki karakterler hizmet karakterleri olarak kabul edilir: . \\ + * ? [ ^ ] $ () ( ) = !< > | :

Örnek kod Örnek kod Örneğin sonucu: Bu kitap *çok* bulması zor. preg_replace

preg_replace işlevi - Düzenli bir ifade kullanarak arama ve değiştirme gerçekleştirir

Sözdizimi

karışık preg_replace (karışık model, karışık değiştirme, karışık konu [, int limit])

Dize konusunu kalıp eşleşmeleri için arar ve bunları değiştirmeyle değiştirir. Limit parametresi belirtilirse şablonun limit oluşumları değiştirilecektir; limit atlanırsa veya -1'e eşitse, modelin tüm oluşumları değiştirilecektir.

Değiştirme, \\n veya (PHP 4.0.4'ten beri) $n biçiminde referanslar içerebilir; ikincisi tercih edilir. Bu tür referansların her biri, parantez içindeki n'inci alt modele karşılık gelen bir alt dizeyle değiştirilecektir; n, tüm modelin oluşumuna karşılık gelen \\0 (veya $0) ile 0'dan 99'a kadar değerler alabilir. birden başlayarak soldan sağa doğru numaralandırılır.

Alt model referanslarını kullanarak joker karakter değiştirmeyi kullanırken, maskenin hemen ardından bir sayının geldiği bir durum ortaya çıkabilir. Bu durumda, \\n gibi gösterim bir hatayla sonuçlanır: ilk alt modele yapılan bir referans ve onu takip eden 1 sayısı \\11 olarak yazılacak ve bu, on birinci alt modele bir referans olarak yorumlanacaktır. Bu yanlış anlama, 1 rakamının takip ettiği ilk alt modele izole bir referansı gösteren \$(1)1 yapısının kullanılmasıyla ortadan kaldırılabilir.

Örnek kod

Bu örneğin çıktısı şöyle olacaktır:

İşlev yürütme sırasında bir kalıp eşleşmesi bulunursa, değiştirilen konu değeri döndürülür, aksi takdirde orijinal konu döndürülür.

preg_replace() fonksiyonunun ilk üç parametresi tek boyutlu diziler olabilir. Dizinin anahtar kullanması durumunda, dizi işlenirken anahtarlar dizide bulundukları sıraya göre alınacaktır. Desen ve değiştirme için dizideki tuşların belirtilmesi isteğe bağlıdır. Değiştirme işleminde yer alan kalıpları ve dizeleri eşleştirmek için dizinleri kullanmaya karar verirseniz, dizilerin her birinde ksort() işlevini kullanın.

Siyah ayı yavaş yavaş tembel köpeğin üzerinden atladı.

ksort() kullanarak istenen sonucu elde ederiz:

Yavaş siyah ayı tembel köpeğin üzerinden atladı.

Konu parametresi bir dizi ise, her bir elemanı için kalıp arama ve değiştirme işlemi gerçekleştirilir. Döndürülen sonuç aynı zamanda bir dizi olacaktır.

Desen ve değiştirme parametreleri dizilerse, preg_replace() dönüşümlü olarak her iki diziden de bir çift öğe alır ve bunları arama ve değiştirme işlemi için kullanır. Değiştirme dizisi kalıptan daha fazla öğe içeriyorsa, eksik öğelerin yerine boş dizeler alınacaktır. Desen bir diziyse ve değiştirme bir dize ise, desen dizisinin her bir öğesi aranacak ve desenle değiştirilecektir (değiştirilen dize sabit kalırken dizinin tüm öğeleri sırasıyla desen olacaktır). Desenin bir dize ve değiştirmenin bir dizi olduğu seçenek mantıklı değil.

/e değiştiricisi, preg_replace() işlevinin davranışını öyle bir değiştirir ki, değiştirme parametresi, gerekli değişiklikler yapıldıktan sonra PHP kodu olarak yorumlanır ve ancak o zaman değiştirme için kullanılır. Bu değiştiriciyi kullanırken dikkatli olun: değiştirme parametresi geçerli PHP kodu içermelidir, aksi takdirde preg_replace() işlevine yapılan çağrıyı içeren satırda bir sözdizimi hatası oluşacaktır.

Kod Örneği: Birden Çok Desenle Değiştir

Bu örnek çıktı verecektir:

$startDate = "27.05.1999";

Örnek kod: /e değiştiricisini kullanma Örnek kod: Tüm HTML etiketlerini büyük harf preg_replace_callback'e dönüştürür

preg_replace_callback işlevi - Bir geri çağırma işlevini kullanarak normal ifade araması ve değiştirme işlemini gerçekleştirir

Sözdizimi

karışık preg_replace_callback (karışık model, geri arama geri arama, karışık konu [, int limit])

Bu işlevin davranışı pek çok açıdan preg_replace() işlevine benzer, ancak değiştirme parametresi yerine, bulunan olayların bir dizisini giriş parametresi olarak ileten bir geri çağırma işlevi belirtmeniz gerekir. Beklenen sonuç, değiştirilecek dizedir.

Örnek kod (.*?).")", $xml, $eşleşmeler, PREG_PATTERN_ORDER); $eşleşmeleri döndür; )

Belirli bir özellik değerine sahip XHTML/XML etiketlerini arayın

Bu işlev, etikete istediğiniz özelliği verebilmeniz dışında öncekine çok benzer. Örneğin kolaylıkla bulabilirsiniz.

Function get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; else $tag = preg_quote($tag); $attr = preg_quote($ öznitelik); $değer = preg_quote($değer); $tag_regex = "/]*$attr\s*=\s*". "(["\"])$değer\\2[^>]*>( .*?)/" preg_match_all($tag_regex, $xml, $eşleşmeler, PREG_PATTERN_ORDER); return $eşleşmeler; )

Onaltılı renk değerlerini bulma

Web geliştiricileri için başka bir yararlı araç! Onaltılı renk değerlerini bulmanızı/kontrol etmenizi sağlar.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "örnek 6 başarılı."; )

Makale başlığını ara

Bu kod pasajı, bir html sayfasındaki etiketlerin içindeki metni bulacak ve görüntüleyecektir.

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

Apache günlüklerini ayrıştırma

Çoğu site iyi bilinen Apache web sunucusunda çalışır. Siteniz bunlardan biriyse Apache günlüklerini ayrıştırmak için neden PHP ve normal ifadeleri kullanmıyorsunuz?

//Günlükler: Apache web sunucusu //Yalnızca HTML dosyalarına başarılı isabetler. Sayfa görüntüleme sayısını saymak için kullanışlıdır. "^((?#istemci IP'si veya alan adı)S+)s+((?#temel kimlik doğrulama)S+s+S+)s+[((?#tarih ve saat)[^]]+)]s+"(?: GET|POST|HEAD) ((?#file)/[^ ?]+?.html?)??((?#parametreler)[^ ?]+)? HTTP/+"s+(?#durum kodu)200s+((?#aktarılan bayt)[-0-9]+)s+"((?#yönlendiren)[^"]*)"s+"((?#kullanıcı aracısı) )[^"]*)"$" //Günlükler: Apache web sunucusu //yalnızca 404 hatalar "^((?#istemci IP'si veya etki alanı adı)S+)s+((?#temel kimlik doğrulama)S+s+S+) s+[((?#tarih ve saat)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parametreler)[ ^?"]+)? HTTP/+"s+(?#durum kodu)404s+((?#aktarılan bayt)[-0-9]+)s+"((?#yönlendiren)[^"]*)"s+"((?#kullanıcı aracısı) )[^"]*)"$"

Çift tırnak işaretini akıllı tırnak işaretleri ile değiştirme

Tipografi meraklısıysanız, normal çift tırnak işaretlerini akıllı tırnaklarla değiştiren bu normal ifadeyi seveceksiniz. Benzer bir normal ifade WordPress'te sayfa içeriğinde kullanılır.

Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $metin);

Kapsamlı şifre doğrulama

Bu normal ifade, metin alanına en az altı karakter, sayı, tire ve alt çizgi girilmesini sağlayacaktır.

Metin alanı en az bir büyük harf, bir küçük harf ve bir sayı içermelidir.

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

WordPress: Bir Gönderiden Resim Almak İçin Normal İfade Kullanma

Birçoğunuz WordPress kullanıcısı olduğunuz için bir makalenin metnindeki tüm görselleri alıp görüntülemenizi sağlayacak bir koda ihtiyacınız olabilir.

Bu kodu kullanmak için temanızdaki herhangi bir dosyaya yapıştırmanız yeterlidir.