Bilgi dünyası ne kadar büyük ve çeşitli,aynı hızla genişleyip gelişir. Herhangi bir karar, genel hareket sürecinde sadece bir andır. Bilgi ve deneyim, bir hedefe ulaşma sürecini anlamayı mümkün kılar, ancak asla - ona ulaşmanın sonucunu değil. Öngörülebilir gelecekte bir sonuçtan söz etmenin genellikle mümkün olduğu şüphelidir, ancak bunun için çabalama sürecinin esas ve nesnel olarak gerekli bir süreç olması çok önemlidir.
"Arzu ve / veya büyük para" yaratmazÖzellikle tam olarak ne yaptığını düşünmediğinde, bir kişinin doğal olarak ve "bedavaya" ne yaptığını yapabilen bir algoritma. Bilgi görevinin herhangi bir konumunda en az bir beyaz nokta vardır, ancak arkasında, genellikle hemen diğer temiz noktalar görünür ve hepsinin beyaz olması hiç gerekli değildir.
İnternet teknolojileri erişimi büyük ölçüde basitleştirdibilgi için, ancak soru - mevcut arzulanana nasıl empoze edilir - basitleştirilmedi, ancak yeni iş "hacimleri" kazandı. Düzenli ifadeler açıkça PHP'deki alanı tüketmese de, ileriye doğru önemli bir adımdır.
Basit işlevler + algoritma = desen
Düzenli ifadeler sunarak, PHP aslındaalgoritmanın içeriğini azaltır, ancak bulunanları işlemek için olağan arama / değiştirme işlevleri ve algoritmaları anlamlarını yitirmemiştir. Yeni fikirler bir bilgi devriminin habercisi değildir. Güvenebileceğiniz maksimum değer, kompakt bir kod ve geliştiricinin bir arama sorgusunu doğru şekilde formüle etme yeteneğindeki artıştır.
Normal PHP'yi bilmeli ve uygulamalısınızifade. Örnekler ikna edici ve etkilidir. Ancak, yeni bir arama mekanizmasının ortaya çıkmasıyla, ağırlık merkezinin bir şablona taşındığının farkında olmalısınız - aslında birçok basit arama işlevinin, koşulunun, döngüsünün ve diğer operatörlerin yerini almasına rağmen bir tür mekanizma.
Sahip olmak:
- kaliteli ve modern bir enstrüman iyidir;
- meslektaşların deneyimlerini görmek ve kullanmak önemlidir;
- gerçeklik ve sanal fikirleri birleştirmek, başarının garantisidir.
Bilginin başarılması, sorunu çözmek için problemi anlamanın nasıl gerekli olduğu, genellikle belirli bir sonuçtan daha önemlidir.
PHP'de normal ifadeler sunulurdilin sözdizimindeki çeşitli işlevler ve İnternet'teki birçok yararlı örnek. Dilin sözdiziminin özellikleri nedeniyle, kullanım seçenekleri yalnızca geliştiricinin hayal gücü ile sınırlıdır, ancak tüm şablonların çalışmayacağı unutulmamalıdır. PHP ile, düzenli ifade doğrulaması önemlidir.
Basit karakter (dize) araması
Bir karakter her zaman bir bayt değildir ve genellikle bir karakterdir.temel bir sinyal olarak, ek olarak tam anlamı taşır. Kodlama, koddaki görünür karakterleri farklı şekilde tanımlar. Sembolün birkaç çeşidi olabilir: "$" = "USD" = "cu", ... - bu, yakın bir yerde, ancak yakın olması gerekmeyen bir şeyin para birimiyle bağlantılı olduğu anlamına gelir. Bununla birlikte, tam anlamı her zaman "$" karakteriyle başlayan ancak "USD" ve "cu" ile başlayamayan PHP değişkeninde olabilir.
Programlarda sembol bir fonksiyonun adı olabilir(string) bağlamda: tanıma ve çalıştır - bu, PHP oluştururken, işlevler, düzenli ifadeler doğrudan karar vermek için kullanıldığında dinamik nesne yönelimli programlama alanındandır. Bulunan sembol "yürütülür", yani bulunduğu yerde ne yapılması gerektiğini kendisi belirler ve "kendisi bunu" gerekli gördüğü için.
Basit bir karakter / dizge aramak o kadar kolay değilmeslek ve semboldeki ne kadar fazla bilgi olursa o kadar iyidir. Her zaman en iyi on yemek fiyatlarını bulmanız, lezzetli doğum günü pastası tarifleri seçmeniz veya bir asma tavan yüklenicisine karar vermeniz gerekmez.
Basit algoritmaların genellikle optimize edilmesi gerekirbasit bilgi aritmetiği ile veya zor koşullarda, veritabanından istenen sembolün seçilmesi gerektiğinde ve bulunması gereken dizenin yüzlerce sitede bulunması gerekir. Aynı zamanda, bir sembol seçmenin fiyatı, veritabanından örnekleme için geçen süreye eşittir ve nereye bakılacağının fiyatı, kötü şöhretli yüzlerce siteyi arama zamanıdır.
Yalnız bir sembol bir cümle veya birkaç kelime öbeği değildir, herhangi bir yerde olabilir ve istediğiniz kadar küçük olabilir. Aradığınız şeyin tam olarak ne olduğu nasıl belirlenir?
Örnek: bir fiyat bulma
Metinde sadece "$" sembolünü bulmak yeterli değildir.Önünde bir sayı olup olmadığını kontrol etmek de her zaman yeterli değildir. "$" Simgesinden önce bir nokta veya sayı girilmesi, önünde para birimi simgeleri olan fiyatların hesaba katılmamasını sağlar. Hiç para birimi olmayan fiyatlar da atlanacak, ancak sayfada bunun açık bir göstergesi var.
Genel olarak, problemi olağan şekilde çözmek, algoritmayı tanınmayacak kadar şişirecek ve çok zaman alacaktır. Bu arada, düzenli bir ifade kullanarak, PHP sayıyı sorunsuz bulacaktır.
$ cContents = preg_match_all ("/ [0-9] + ([$] | usd | cu | siz) {1} / i";
"e-postaya bak - 2usd; <br/>";
"e-posta bul - 2u.e.; <br/>";
"iş e-postası - уе2; <br/>";
"e-postayı kontrol et - 13 $", $ aResult);
... ";". implode (",", $ aResult [0]). "<br/>".
Cevabı verecek: "2; 2usd, 2у.e.", Ancak satırda hiçbir şey bulamayacak: "e-postayı kontrol et - 13 $".
Şablonda önünde veya arkasında bir sembolün varlığını sağlayarak, çoğu durumda hedefe hızlı bir şekilde ulaşabilirsiniz.
$ cContents = preg_match_all ("/ ([0-9] + ([$] | usd | cu | ye) {1}) | ([[$] | usd | cu | ye) {1} [0-9] +) / i ";
"e-postaya bak - 2usd; <br/>";
"e-posta bul - 2u.e.; <br/>";
"iş e-postası - уе2; <br/>";
"e-postayı kontrol et - 13 $", $ aResult);
... ";". implode (",", $ aResult [0]). "<br/>".
Sonuç: "4; 2 usd, 2u.u., ye2, 13 $".
İstenmeyen mantık hakkında
PHP diğerleri gibi düzenli ifadeler sunararaçları kullanır, ancak bunları kurallarına göre kullanmak veya diğer satır içi işlevleri sözdizimi biçiminde kullanmak gerekli değildir.
Aramaya başlamadan önce istediğinizibir dizi ve aramanın gerçekleştirileceği yer, bir ön kritere göre bileşenlere ayrılmıştır. Basit bir explode () ve implode () işlevi çifti, genellikle çözümü daha kolay ve daha hızlı hale getirir.
Örneğin, ön çalışma sonucundaHer köyün kaç tane patates topladığına dair ilçe için bir dizi satır (veri) oluşturulmuştur: NameDevice ve hasat edilen miktar belirtilir ve köyde faaliyet gösteren birkaç işletme varsa, o zaman NameDevelopment.NameEnterprise ve value "; " vb. tüm işletmelerde. Bu durumda toplanan toplam miktarı hesaplamak mümkün olmayacaktır, ancak eğer impode (";", $ aResult) yaparsanız, tek bir uzun satır olacaktır, bu çiftlerde - NameVillage / NameVillage.NameEnterprise - toplanan miktar - olacaktır ";" ile listelenmelidir. Alınan şeyin tam tersini yaptıktan sonra, patlat (";", $ aResult), toplayan herkesin ve ne kadar topladığının bir dizisidir, o zaman dijital olmayan tüm karakterleri satırlardan çıkardıktan sonra, elimizde sadece sayılar var toplamı toplanan toplam miktar olacaktır.
Bu örnekte, PHP'deki normal ifadelergereksiz şeylere hiç bakmamaya izin verirler, gerekli dijital değerleri basit ve kolay bir şekilde çıkarırlar. Köylerin ve işletmelerin isimleri ne kadar uzun olursa olsun hızlı ve verimli. Bu çözüm ideal değildir, ancak her zaman kurallara uymak zorunda olmadığınızı gösterir. İstediğinizi genellikle alışılmadık bir şekilde elde edebilirsiniz.
Teknik açıdan, kodlamadan soyutlama
Algoritmanın sözdizimi nasıl olduğunu söylemiyorgerçekten görünüyor. Ancak, sayfa, komut dosyası ve dizelerin (aranan ve aramanın gerçekleştiği) aynı kodlamasını sağladıktan sonra, sorunun teknik tarafının dışına dalabilirsiniz.
Sadece neyi arayacağınızı değil, nerede olduğunu da bilmeniz gerekir.ne zaman, ne miktarda, neyi ve nasıl yapılacağını. Biçimsel olarak, PHP normal ifadeleri kendi başına eksiksiz ve tamamen işlevsel bir mekanizma olarak uygulanır, ancak birçok nedenden dolayı benzerlerinin farklı dillerdeki uygulamaları farklılık gösterir. Genel bir kural olarak, belirli bir sorunu çözmek için bir veya başka bir şablonu bir veya başka bir araçsal ortama aktarmadan önce, ilk verilerin tüm olası varyantlarını kontrol etmek için yüksek kaliteli bir uyarlama yapmak gerekir.
Kendi deneyiminizi kullansanız bilePHP geliştirme, düzenli ifadeler, örnekler, şablonlar ve yapılar yakından inceleme gerektirir. Dilin işlevselliği, sözdizimi ve yürütme ortamı dinamik olarak değişiyor.
Şablon yapısı ve içeriği
Daha önce bir kombinasyon olarak yazılanlararama işlevleri, koşullu operatörler, değiştirme, ekleme, silme işlemleri, belirli kurallara göre bir satır karakter içine alınır - bir normal ifade modeli. Aslında, önemli bir miktar kesin olarak tanımlanmış bir şekilde kodlanır ve belirli kurallara göre yürütülür.
Ayrıca herhangi birdilin operatörü, bu nedenle normal ifade modelinde hata ayıklayamazsınız, bu işlem yalnızca öykünebilir. Genel bir kural olarak, seçenek kabul edilir: işe yarıyor - çalışmıyor. Sözdizimi çok basittir, ancak özellikle işin başlangıcında algılanması çok zordur.
Basit bir ifade örneği
Basit bir versiyonda, desen şu satırla eşleşir:
$ cContents = preg_match ("/ asdf / i", "asdf", $ aResult). ";". implode (",", $ aResult).
Sonuç "1; asdf" olacaktır çünkü işlevişini karşılaştığı desenin ilk eşleşmesinde bitirir. "Aaaasdf" dizesinde ve "zzzasdfvvv" dizesinde arama yaparsanız sonuç aynıdır. İlk ve / veya son karakteri belirtirseniz, toplam net olacaktır:
$ cContents = preg_match ("/ ^ asdf / i", "asdf", $ aResult). ";". implode (",", $ aResult). "<br/>";
$ cContents. = preg_match ("/ asdf $ /", "asdf", $ aResult). ";". implode (",", $ aResult). "<br/>".
Sonuç şu şekilde olacaktır: 1; asdf1; asdf.
"^" Ve "$" karakterleri nereden başlayacağınızı gösterirdesen ve nasıl bittiği. Preg_match işlevinin sonucu, eşleşme sayısıdır, 0, 1 veya bir hata tespit edilirse yanlış olabilir. Üçüncü parametre - bir dizi - bulunan tek öğeyi içerir. Preg_match_all () işlevinin kullanılması durumunda, arama satırın sonuna kadar devam eder.
$ cContents = preg_match ("/ asdf / i", "asdf123asdf456asdf789", $ aResult). ";". implode (",", $ aResult). "<br/>";
$ cContents. = preg_match_all ("/ asdf / i", "asdf123asdf456asdf789", $ aResult). ";". implode (",", $ aResult [0]). "<br/>".
Sonuç:
bir; asdf
3; asdf, asdf, asdf.
Özel talimatlar kullanmazsanız, o zamanher karakter, dizgi kodlamasından ve şablon kodlamasından bağımsız olarak kendisini ve yerini tanımlar. Programcı, bu öğelerin kodlamalarının birbirine ve sayfanın kodlanmasına göre doğru olmasına dikkat etmelidir.
Normal ifadelerle çalışmak için PHP işlevleri
PHP normal ifadeleribelirli bir şekilde yazılmış karakter dizileri. Genellikle, diğer programlama dilleriyle benzer şekilde, "/" ... "/" sembolleriyle yazılır ve tırnak içine alınır, algoritmaya bağlı olarak, tekli ve çiftli kullanabilirsiniz.
Ana işlevi php preg match düzenliifade bir model eşleşmesi olarak kullanılır ve ilk bulunduğunda durur, _all sonekine sahip sürümü tüm eşleşmeleri arar ve bunların bir dizisini döndürür. Preg değiştirme işlevi, bulduğu her kalıp eşleşmesinin yerini alır, dizilerle çalışabilir, aramaları tasarlamanıza ve birden çok seçenek arasında değiştirmenize olanak tanır.
Düzenli çalışmak için ilginç seçeneklerifadeler, değiştirme metnini değil, değiştirmeyi gerçekleştirecek işlevin adını alan preg_replace_callback işlevi kullanılarak geliştirilebilir. Pratik değerine ek olarak, burada şablonların kontrol edilmesi için, ikincisinin geliştirilmesinde ve hata ayıklamasında önemli bir rol oynayan mekanizmalar uygulayabilirsiniz.
Normal ifadelerin kapsamı
Köprü metni dilleriresmileştirilmiş bilgiler, daha büyük ölçüde kaynak materyaldir. Büyük miktarda bilgiyi verimli bir şekilde işlemek için çok sayıda şablon ve yapı geliştirilmiştir. Bu işin çoğu, çeşitli site yönetim sistemlerinde (CMS) yerleşik mekanizmalar tarafından yapılır.
Şaşırtıcı olmayan bir şekilde, birçok CMS standart haline geldi.fiili şantiyeler için ve geliştirme şirketleri tarafından bakımı (güncelleniyor), şirket içinde şablon geliştirmeyi gerekli kılmazlar. Bununla birlikte, bu tür sistemlerin dışında, düzenli ifadelerle deneyim sahibi olmak çok yararlıdır.
Düzenli ifadeler ve gerçek bilgiler
Düzenli ifadeler için önemli bir uygulama alanıPHP, PHPOffice kitaplıklarının gelişiyle şekillenmiştir. Belgelerle ve elektronik tablolarla çalışmak her zaman çok önemli olmuştur ve büyük önem taşımaktadır ve OOXML standardı yalnızca gerçek belgeleri ayrıştırmaya değil, aynı zamanda bunları programlı olarak oluşturmaya da izin vermiştir.
Hypertext dillerinin ve PHP'nin geliştirilmesi sayesindeÖzellikle, yapısı ve içeriği resmileştirme ve otomasyona gerçekten uygun olan faturalar, raporlar, iş planları ve diğer bilgi nesneleri gibi "standart biçimli" belgelerin "üretimini" otomatikleştirmek için gerçek bir fırsat ortaya çıkmıştır. .
Açıklamak için OOXML kullanımı ile bağlantılı olarakNormal ifadeler geliştirme süreci, ilk etapta HTML ve CSS biçimlendirme dilleri ile geleneksel çalışmadan önemli ölçüde farklıdır. Gerçek bir belge, işaretlemenin yanı sıra ve içeriğin kendisinin yanı sıra birçok ayrıntıya sahiptir. Örneğin, bir program tarafından otomatik olarak oluşturulan bir belge katı ve doğru içeriğe sahip olacaktır. Bir kişi tarafından oluşturulan veya onun tarafından işlenen bir belge, birçok etikete boyanmış içeriğe sahip olacaktır. Bir belgeyle yapılan herhangi bir çalışma, anlambiliminin aynı kalmasına, ancak farklı sayıda farklı yapıya göre iç kısmının boyanmasına yol açar.
Doğal bilgi ve durum
Bir kişi her zaman bir problemi çözmekle ilgilenir,bilgisi olan ayar ve sonuç olarak bilgi de verilecektir. Sorun ifadesini bir belge biçiminde sunarak, bir kişi, uzmanlar tarafından açıklama sırasında (değişiklik yapmak, ifadeleri netleştirmek, silmek, düzenlemek) yalnızca bir belgenin birçok sürümüne yol açmayan belirli bir anlambilim alır, aynı zamanda farklı içeriğe sahip versiyonlarına da.
Özellikle, "Çözmekare çözüm ", düzenledikten sonra şöyle görünmeyecektir:" İkinci dereceden bir denklem çöz. "İlk hata önce, sonra ikincisi düzeltildiyse, OOXML stilindeki doğal bilgi şöyle görünebilir:" [Çöz] [ ] [kare] [e] [] [yaşasın] [in] [nenie] ", ancak bu, görevin OOXML etiketlerinde böyle görüneceğinin garantisi değildir (köşeli parantezler etiket parantezlerini taklit eder).
Bilgileri bir araya getirmek, daha sonraher bir görev düzenleme süreci, ancak bu prosedür her seferinde farklı bir algoritmaya göre gerçekleştirilecektir. Bilgilendirme görevlerini resmileştirmek için bir tür araç olarak düzenli ifadeler, aslında resmi hipermetin yapılarından doğal bilgiye giden bir yol haline geldi.