Üst üste değişikliklerin Php ikamesi. PHP Şablon Hasır. Satırlarda Obrobka zminnyh

PHP, bu saatte web eklentilerini uygulamak için en popüler dillerden biridir. Yoga temellerine adanmışlık Tsei kursu. Zastosuvannya zdotuh novichok'un pratikliğine vurgu.

PHP dili, İnternet'in ortasında (kursun ilk dersini okuyarak kendinizi tanıyabileceğiniz) belirli bir pratik görev olarak hizmet etmek için yaratılmıştır. Ayrıca teorik mikroskopi üzerinde çok fazla durmamaya çalışacağız ve cilt dersinde belirli bir görev geliştirmeye çalışacağız. Örneklerin çoğu gerçek sistemden alınmıştır: bilişim tarihinin sanal müzesi. Kursun ilk bölümü, bu tür yapıların sözdiziminin temellerini öğrenmeye ayrılmıştır. Bu nedenle, istemci-sunucu teknolojisi, PHP hareketli trafiğinin ana alanı olarak kabul edilir. O halde, bize göre, vbudovannyh işlevlerinin ve ek pratik görevlerinin değerini bilmenin en ilkel işlevlerinin doruk noktasına geçelim. PHP dilinin nesne modeli en önemlisi olmasa da, verilerin nesne modelini tanımlamanın doğal bir yolunun olması önemlidir. Temel model olarak sanal bilişim müzesi belgesinin modeli incelenecektir. Bundan sonra, bir dizi uygulamalı yöne bakılacaktır: dosya sistemi, veritabanı, satırlar, oturumlar, DOM XML içeren bir robot - her şey pratik bir film seçiminin temel görevlerine bakmanıza izin verecektir.

Kitap:

PHP Şablon Hasır

PHP Şablon Hasır

Şablonlar nelerdir ve hangi kokulara ihtiyaç vardır?

Film programlama şablonu nedir? Şablonun ortadaki değişikliğin metni olduğunu söyleyebilirsiniz. Şablonun işlendiği saatin altında, değiştirilen değerlerin değiştirilmesi gerekir.

Derslerden birinde, şablonun ucuna zaten baktık. Bu, belgeleri görüntülemek için bir şablondur. Koristuvach, ek html etiketleri için işaretlenmiş bir metin satırı oluşturduktan sonra, yenisine özel meta karakterler ekledi (yani), programımız yıllar içinde belirli unsurların anlamını değiştirdiği için. Neden böyle bir şablona ihtiyacımız var? Örneğin, program kodunu değiştirmeden bir belgenin oluşturma stilini değiştirebilirsiniz.

Yiyecekler için şablon gerektiren en kapsamlı açıklama şuna benzer: Tasarım için, verilerin sunulma biçiminde robotik programların mantığını doğrulamak için şablonlara ihtiyaç vardır.

Bir şablona bir popo işaret etmek en basitlerinden biridir. Bu işlem için, bunun yerine str_replace() ikame işlevi kullanılır. Şablonlarla çalışmanın en yaygın yolu sınıf kitaplıkları oluşturmaktır. Kendi kitaplığınızı oluşturma ilkesinde, obov'yazykovo değil, oskolki şu anda mevcut değildir, bu tür bir şey değildir. Bu tür kütüphanelerin faaliyetlerine bakabiliriz. Ale, koçan için, farklı şablonlar seçmenin bazı açıklayıcı yollarının mükemmelliği üzerine bir görev formüle edeceğiz.

Otzhe, zavdannya:

Veritabanında bulunan makalelerin bir listesini içeren bir web sayfası oluşturmak gereklidir. Basitlik için, makalenin başlığı, yazar yazarı, kısa bir özet özeti ve temsillerin ya veri tabanındaki metne ya da dosyaya bakan yeni bir tam metin değişikliği olarak adlandırılabileceğine lütfen dikkat edin. Liste örgütler tarafından suçlansın ki, makalenin adına basıldığında yeni yüzyılda en son değişiklik duyurulsun.

ikame şablonları

Basit ikame yöntemini kullanarak böyle bir görevi nasıl çözebilirsiniz, tobto. Bu yöntemle, düzenleme için belgeleri nasıl yazdınız?

İkinci sayfa için bir şablon seçip buraya (dosyadan veya veritabanından) kaydetmeniz gerekir. Açıkçası, tüm taraflar için bir şablon tahmin edemiyoruz, çünkü veritabanında kaç makale olduğunu bilmiyoruz. Şablonda, yalnızca html ve meta karakterleri değiştirmeyi başardık. Bu nedenle, listenin bir satırı için, zaten programlı olarak gerekli sayıda satıra dönüştürülmesi gereken bir şablon yazabiliriz.

  • "
    hedef=yeni>
    ()

    Ek olarak, makalenin son metni için teklifin sunulmasıyla ilgili bir sorun daha var. Yerine koyma kuralına uyarsak (veri tabanındaki tüm meta karakterleri değerlerinde küçültün), o zaman şunu öğrenebilirsiniz.Metni değil, metnin kendisini ekleyelim. Bu nedenle, bu öğe için, değiştirmeden önce ek bir yeniden doğrulamaya ihtiyacınız var ve sonuç olarak, tam metin alanı makalenin metnini değiştirecek ve dosyaya göndermeyecek. Hayatımızı kolaylaştırmayacağız ve tam metin alanına dosya gönderme konusunda endişelenmemize gerek kalmayacak. Aynı görevi şöyle yazabilirsiniz:

    $li_tmpl = file_get_contents("tmpl.html");
    // dosyadan satır şablonunu oku
    // tarihi ayarlayın ve seçin
    // veri tabanı
    $bağ = mysql_connect("localhost",
    "nina", "123")
    or die("Bağlanamıyor");
    mysql_select_db("kitap");
    $sql = "Makalelerden * SEÇİN";
    $q = mysql_query($sql,$bağlan);
    // aşırı güçlü istek
    $sayı = mysql_num_rows($q);
    for($i=0; $i<$num; $i++){
    $tmpl. = $li_tmpl;
    $tmpl = str_replace("",
    mysql_result($q,$i,"başlık"),$tmpl);
    $tmpl = str_replace("",
    mysql_result($q,$i,"yazar"),$tmpl);
    $tmpl = str_replace("",
    mysql_result($q,$i,"soyut"),$tmpl);
    $tmpl = str_replace("",
    mysql_result($q,$i,"tam metin"),$tmpl);
    }
    yankı $tmpl;
    ?>

    Boo'nun şablonu böyle, daha kalın bir yer gibi, yaklaşık olarak yaya olarak alınır.

    PHP'ye Giriş(Savel'eva N.V.)

    Ders, PHP'nin böyle bir dili olanlar hakkında, yerinde yaratıldığı ve şimdi Volodya'nın bu tür olanaklarıyla nasıl muzaffer olduğu hakkında bir açıklama veriyor.

    Yüklü ve ayarlanmış yazılım(İvanov İvan)

    Prensip olarak, tamamlama yöntemi basit ve kolaydır, ancak programcının ek bilgisinin yardımıyla, görevler daha katlanabilir olduğunda, düşük değer basittir. Görevi tamamlamak için tsilih bloklarının kurulumuyla çalışmak veya fikri değiştirmek, FastTemplate ve Smarty gibi şablon sınıfları oluşturmak gerekir. Raporlarını tartışalım.

    HızlıŞablon

    FastTemplate - robotu şablonlardan uygulamanıza izin veren bir sınıf koleksiyonu. FastTemplate şablonuna mantık eklemek mümkün değil, hepsi program kodunun hatası. FastTemplate'de çalışma şablonları fikri, harika bir sayfa olsa da, kişisel olmayan shmatochkiv'den oluşması gerçeğine dayanmaktadır, bunlardan en azı - metnin en önemli satırları ve pis koku bu anlamı alacaktır. .

    FastTemplate şablon dosyası nedir? Bu, FastTemplate sınıfının yöntemleriyle işlenebilen, özel türden değişikliklerin kullanılabileceği özel bir html dosyasıdır.

    FastTemplate şablonlarını değiştirme sözdizimi şu şekilde açıklanmıştır: ((+))

    Tse, değişikliğin kıvrık yaydan kaynaklandığı anlamına gelir "(". Vadenin diğer ve sonraki sembolleri A'dan Z'ye büyük harfler, alt güvenin sayıları veya sembolleridir. Ek kıvrımlı yay için değişiklik ücretlendirilir "), sonra eğri.

    (BAŞLIK)
    (AUTH20)
    (TOP_OF_PAGE)

    Belirtildiği gibi, FastTemplate'in ana fikri, ek şablon ekleriyle bir taraf oluşturmaktır. Örneğin, görevimizi tamamlamak için üç şablon dosyası oluşturabiliriz:


    (BAŞLIK_)


    (ana)



      (LIST_ELEMENT)

  • (BAŞLIK)
    ((YAZAR))

    (ÖZ)

    Şablonlar bizim tarafımızdan oluşturuldu - Vikonali tasarımcısının eseri. Şimdi onları nasıl işleyeceğinizi öğrenmek gerekiyor, tobto. programcının robotunu viconate. Aynı anda daha fazla şablonu işlemek için bir program oluşturalım.

    FastTemplate şablonlarıyla çalışmaya başlamadan önce, bu sınıf setini programımıza bağlamanız gerekir. Gerçek hayatta, bir dosyadaki FastTemplate kayıt sınıflarının bir koleksiyonu, kural olarak, örneğin komutun yardımıyla bağlayabileceğiniz class.FastTemplate.php3'ü arayacağım:

    include("class.FastTemplate.php3");

    Saldırgan önemli kroşe - FastTemplate sınıfına bir nesnenin oluşturulması, bir nedenden dolayı onu kullanabiliriz:

    $tpl = Yeni HızlıŞablon(
    "/yol/to/şablonlar");

    Parametre olarak şablonlarımızın bilindiği aya giderken yolda geçilir.

    FastTemplate ile çalışmak için bazı temel yöntemleri bilmeniz gerekir: tanımla, ata, ayrıştır ve FastPrint.

    yöntemi tanımla

    Sözdizimi:

    define(dizi (anahtar => değer,
    anahtar1 => değer1, ...))

    define() yöntemi, programla eşleştirilebilmesi için şablon dosyasını kısa adlarla eşleştirir. Tobto "anahtar" - tse im'ya, yak mi, im'ya "değer" satırına yazılan dosya şablonuna gönderilen programı vikoristovuvaty yapacağız. Tanımlama yöntemi dışında, şablon dosyalarının gerçek adlarının hiçbir yerde değiştirilmesi önerilmez. define() yöntemi bir saatliğine çağrıldığında, tüm şarkı şablonları yakalanır.

    $tpl->define(dizi (main => "main.tpl",
    list_f => "list.tpl",
    list_el=>"list_element.tpl"));

    Burada şablonların dosya adlarının takma adlarını ayarlıyoruz. Qi takma adları, tobto. main, list_f ve list_el'in değiştirilmesi, program tarafından main.tpl, list.tpl ve list_element.tpl içindeki farklı dosya adlarını değiştirmek için değiştirilecektir.

    atama yöntemi

    Sözdizimi:

    atamak((bahis anahtarı/değeri) veya
    (dizi(bahis anahtarı/değeri))

    assign() yöntemi, değiştirilen bir değeri, "anahtar" - değişikliğin adı ve "değer" - atanması gereken değeri atar. Şablonda değiştirilenler değerlerle değiştirilecektir, bunu yardımcı assign() yöntemi için ayarlamak gerekir. Vіdpovіdno sözdizimi tsey yöntemi iki farklı biçimde bükülebilir. FastTemplate birden fazla diziye sahiptir, bu nedenle aynı anahtarın değerini yeniden ayarlarsanız, üzerine yazılır.

    $tpl->atama(dizi(
    TITLE => "Yüklü ve güncellenmiş bellenim",
    TITLE => "PHP'ye Giriş"));

    Burada, dosyalarda bulunan değişikliğin dvіchі değerini TITLE adındaki şablona ayarlayabilirsiniz. Tsya, değeri atanan geri kalanın annesini değiştirir, tobto. Kazanılan dorovnyu satırı "PHP'ye Girin".

    ayrıştırma yöntemi

    Sözdizimi:

    ayrıştırma (dönüş değişikliği,
    dzherela şablonları)

    parse() yöntemi, FastTemplate'in en üstündedir. Vіn vstanovlyuє zmennja zminnoї, scho to döndürmek, dzherel değerlerinden genelleştirilmiş şablonlara eşittir. Yöntem üç biçimde bükülebilir: basit, depo ve gel.

    $tpl->parse(ANA, "ana");
    // basit biçim
    $tpl->parse(ANA, dizi("list_f", "ana"));
    // Depo formu
    $tpl->parse(MAIN, ".list_el");
    // gelecek form

    Basit bir biçimde, "main" takma adlı şablon yok edilir (çünkü daha fazla makyaj malzemesi yoktur), tüm değişiklikler gönderilir ve sonuç, zminnoy MAIN'in değeri olarak alınır. Diğer şablonlarda bir değişiklik (MAIN) belirirse, işleme sonucunda "ana" şablondan kaldırılacak bir değer ile değiştirilecektir. Bu, ek şablonları oluşturmanıza olanak tanır.

    Parse() yönteminin ambar formu, şablonları birbirine kolayca yerleştirmek için oluşturulur. Sonraki kayıtlar eşdeğerdir:

    $tpl->parse(ANA, "list_f");
    $tpl->parse(ANA, ".ana");

    aynı şey

    $tpl->parse(ANA, dizi("list_f", "ana"));

    Depo formu seçilirse, önemlidir, ilkinden sonra listeye giden şablonun tenli olması, bu değişiklikten sonra işleme sonuçlarının şablona aktarılması önemlidir. Uygulamada, değişiklikten (MAIN) ana sorumludur, içindeki parçalar, işlemenin sonuçlarını list_f şablonuna iletir. main (MAIN) değişikliğinin yerini almazsa, list_f şablonuna göre işlemenin sonuçları boşa gidecektir.

    Gelen stil, şablonun işlenmesinin sonuçlarını değiştirilmiş bir sonuca eklemenize izin verir. Şablon dosyasının diğer adının önündeki nokta, FastTemplate'e, sonuçları döndürmeden önce bu şablonun işlenmesinin sonucunu döndürmesi ve üzerine yazmaması gerekenler hakkında bilgi verir. Bu stil, satır sayısındaki bir değişiklikle bir tablo yapıldığında kazanılması muhtemeldir, bu nedenle, örneğin, sonuç olarak, veri tabanına sorulacaksınız.

    FastPrint yöntemi

    Sözdizimi:

    FastPrint(değiştirilmiş değişiklik)

    FastPrint() yöntemi, yeni değiştirilen değişikliğe geçirilen başka bir yöntemdir. Parametresiz çağrılar olsa bile, çağrının geri kalanı parse() yöntemi tarafından işlenir.

    $tpl->FastPrint();
    /* ön popoya nasıl devam edilir,
    o zaman bu fonksiyon bozuk
    ANA */
    $tpl->FastPrint("ANA");
    // bu işlev onları ortaya çıkarmak için

    Ekranda değil, örneğin bir dosya üzerinde okumak gerektiğinden, verilerle ilgilenmek için fetch() yönteminin yardımını kullanabilirsiniz.

    $veri = $tpl->getir("ANA");
    fwrite($fd, $veri); // Dosyaya veri yaz

    FastTemplate'deki yardım şablonlarının arkasındaki görev

    Şimdi görevimizi kazanmak için ihtiyacımız olan tüm yöntemleri toplamaya çalışacağız.

    Düzenli değiştirme işlevi daha muzaffer olsaydı, görevlerin çözülmesinin ilk dönüşte daha düşük, daha katlanabilir olduğunu belirtmekte fayda var. Daha sonra burada üç farklı şablonu değiştirebiliriz (toplu belgeler, listeler ve liste öğeleri).

    Bu şablon sınıfı, PHP3 robotları için PHP4'ün yayınlanmasından önce yayınlanacaktır. Uygulamayı protesto etmek için FastTemplate sınıf kitaplığını almanız ve dosyayı çalışma dizininizden kopyalamanız gerekiyor. PHP4 ile çalışıyorsanız, o zaman class.FastTemplate.php3 dosyasının birkaç değişiklik yapması gerekir.

    Akıllı Şablonlar

    Smarty, büyüyen PHP projelerinden biridir, resmi web sitesi http://smarty.php.net'tir. Orada mümkün olduğunca çok Smarty sınıfı ve güncel belgeler alabilirsiniz. Şablonları işlemeye yönelik bu sınıflar grubu, FastTemplate'in daha düşük olması nedeniyle çok daha kalın ve işlevseldir. Nasampered, adalet karşısında kendimi aynı mantıkla bağdaştırmıyorum. Verilerde dikkate alınması gereken mantık, şablonu kullanabilir, Smarty bayilerini düşünebilirsiniz. Bu nedenle, Smarty şablonunda akıllı operatörler, dosya ekleme operatörleri, değişiklik değişikliği operatörleri, döngüler de olabilir. Smarty'nin bir diğer özelliği de şablonların derlenmesidir. Şablonlar php koduna çevrilir ve PHP yorumlayıcısı, değer her ayarlandığında gerekli tüm değerleri işleyebilir. Çalışmayı hızlandırmak ve derlenen şablonlar önbelleğe alınır.

    Smarty şablon motorunun ana yapılarına bir göz atalım.

    Kurulmuş

    İlk olarak, Smarty'nin kurulumunu neden önemsiyoruz. FastTemplate'deki gibi burada her şey o kadar basit değil. Smarty, bir dizi farklı kitaplık dosyasıyla aynı, sınıf açıklamasına sahip bir php dosyasından oluşur. Smarty şablonlarıyla çalışmak için tüm programlarınız için kullanılabilir kitaplıklar oluşturmanız gerekir. Koku, Smarty dağıtımının /libs/ dizininde bulunur. Smarty sınıfının kendisine yönelik dosyanın adı Smarty.class.php'dir. Smarty sınıfı için hangi kitaplıkların mevcut olduğunu kontrol etmek için aşağıdaki betiği yazmanız gerekir:

    require("Smarty.class.php");
    // dosyayı dahil et
    // Smarty sınıfının tanımı
    $ Akıllı = Yeni Akıllı;
    // Smarty sınıfının bir örneğini yarat
    ?>

    Yogo vikonanna sırasında bir af çıkmış gibi, aşağıdaki seçeneklerden birini denemek gerekir.

    // dosyayı sınıf açıklamasıyla bağla
    require("c:/users/my/Smarty/libs/
    Smarty.class.php");
    $ Akıllı = Yeni Akıllı;
    // Smarty sınıfının bir örneğini yarat
    ?>

    Kitaplıkların bulunduğu dizini include_path'e ekleyin (bu şekilde kodu değiştirmeniz gerekmez).

    define("SMARTY_DIR",
    "c:/users/my/Smarty/libs/index.html");
    require(SMARTY_DIR."Smarty.class.php");
    $ Akıllı = Yeni Akıllı;
    ?>

    Şimdi, kütüphanelerin bulunabilmesi için değiştirdiğimiz için, Smarty robotu için gerekli dizinleri oluşturmak gerekir, promosyonlar için olduğu gibi, bu tür isimler olabilir:

    Şablonlar - dizin, de mi zberіgatimemo şablonlar oluşturdu;

    Templates_c - Smarty'nin derlenmiş şablonları kaydettiği dizin;

    Yapılandırmalar – yapılandırma dosyalarının kaydedildiği dizin;

    Önbellek - önbellek için dizin.

    Adlar, yeniden eşlenebilen Smarty sınıfına $template_dir, $compile_dir, $config_dir, $cache_dir yetkileriyle verilir. Smarty şablonlarıyla çalışırken, dış görünüm programları için farklı dizin kümeleri kullanmanız önerilir. Geçersiz kılınan dizinlere erişim Smarty kitaplığı tarafından sağlanır ve hiçbir zaman doğrudan bir web tarayıcısı aracılığıyla erişilmez. Bu nedenle, güvenlikten kaynaklanan sorunlardan kurtulmak için, www üzerinden erişimin olmadığı dizinleri orada genişletmek en iyisidir.

    c:/smarty_dirs/book/ konumunda Smarty dizinlerinin bir listesini oluşturalım. Verileri bir tarayıcı aracılığıyla okumanın mümkün olmadığını lütfen unutmayın. Programımızın (veya programımızın) /~my/tasks/book/ adresiyle bilinmesine izin verin. $compile_dir ve $cache_dir Smarty dizinleri yazma erişimi gerektirir, bu nedenle sunucunuzun kapanması için önbellek yöneticisi için uygun izinleri ayarlamanız gerekir (www veya hiç kimse deyin).

    Protesto etmek için basit bir şablon ve onu Smarty mekanizmasına dönüştüren bir program oluşturuyoruz.

    index.tpl (є Smarty şablonu ve c:/smarty_dirs/book/templates/ şablon dizininde bulunur)

    (* Akıllı şablon *)
    Merhaba ($isim)!

    index.php (program kodumuz /~my/tasks/book/ dizininde veya bu konuda c:/users/my/tasks/book/ dizininde bulunabilir)

    Sonuç olarak şunları göz önünde bulundurabilirsiniz:

    Merhaba Vasya!

    Programımızın çalışması için gerekli ayarlar bir okremium dosyasına aktarılabilir ve Smarty sınıfının bir uzantısı olarak düzenlenebilir.

    Temel Sözdizimi

    Smarty sadece şablonları işlemek için bir sınıf değildir, yeni bir şablonun amacını tanımlar. Ana yoga unsurlarından daha az torknemosya. Otzhe, Smarty şablonu nedir? Özel yapıların (değişen, çağıran işlevler ve yöntemler) ve html etiketlerinin toplanması. Smarty film şablonlarının öğeleri (etiketleri) sembol ayırıcılar arasına yerleştirilir. Promosyonlar için kıvırcık yay "(" o ")" sembolleri vardır, ancak bunları değiştirebilirsiniz. Böyle bir ortamda istiflenmeyen her şey, Smarty işlem gerektirmeyen bir sabit gibi görünüyor. Index.tpl şablonu için, üzerine gelindiğinde, ($name) değiştirilir ve "Merhaba" satırları "!" - şablonun işlenmesi sırasında değişmeyen sabitler.

    Smarty'deki yorumlar iki yıldız arasında yazılır:

    (* Yorum yapın. Şablonu işledikten sonra
    Ekranda VIN görünmüyor *)

    Skin Smarty etiketi veya değişikliğin değerini görüntüleyin veya işlevi çağırın. Fonksiyon şöyle yazılır:

    (işlev_adı nitelik1="değer1"
    nitelik2="değer2")

    Değiştirilmiş şablonların çıkartma türleri olabilir:

    Değişim, koristuvach'ın php-script'inin umduğu şeyin anlamı, önlerindeki doların işaretinden anne sorumludur.

    Örneğin: ($first_name)

    Değeri koristuvach'ın php-script'inde atanan dizinin öğeleri, ek sözdizimi için şablonda mevcuttur ($im'ya_array.associative_key).

    Örneğin: ($person.last_name)

    İlişkisel olmayan bir dizinin öğeleri, kare yay sözdiziminin yardımı için kullanılabilir: (im'ya_array[sayı_index])

    Örneğin: ($kişi)

    Nesnelerin yetkisi, php-script'te ayarlanır, ek sözdizimi için şablonda bulunur: (im'ya_ob'єkta->im'ya_authority)

    Örneğin: ($person->e-posta)

    Değişiklikler, zavantazhenі z konfіguratsіynyh dosyaları (sho tse tse, mi rozpіmo trohi pіznіshe) # sembol arasına sığar. Ayrıca $smarty.config ilişkisel dizisinin öğeleri de kokuyor.

    Örneğin: (#bodyBgColor#) veya ($smarty.config.bodyBgColor)

    Ek olarak, orijinal değişiklik ($smarty), HTTP isteğinin değiştirilmesi gibi bazı özel değişiklik şablonları için ayrılmıştır ve aynı zamanda tarihlendirilir.

    Smarty şablonları, değerlerini değiştirmek için işlevleri veya satırları kodlamak, değiştirmek üzere ayarlanabilen bir dizi değiştiriciye sahiptir. Değiştiriciyi durdurmak için, dikey çizimden sonra, değişikliğin adlarını, işlevlerini veya böyle bir şarap durdurulana kadar arka arkaya isimlendirmek gerekir.

    Örneğin, değişikliğin ($title) değerini büyük harfe çevirmek için üst değiştiriciyi tobto eklemeniz gerekir. not edin: ($başlık|üst)

    Düz bir dikey sınırla birer birer su kreması yaparak bir dizi değiştiriciyi yenmek mümkündür. Örneğin, ($title|upper|truncate) değişikliğin değerini büyük harfe çevirir ve 80 karaktere kadar küçültür.

    Tüm değiştiricileri geçersiz kılmayacağız. Bir liste için Smarty belgelerine bakın. Diyelim ki bu ek yardımla karakter, satır ve paragraf sayısını düzeltebilir, bir satır ekleyebilir, o saatteki tarihleri ​​görme biçimini ayarlayabilir ve düzenli olarak değiştirip değiştirebilirsiniz.

    Yapılandırma dosyaları

    Yapılandırma dosyaları, bir dosyanın yardımı için bir şablondan korsanlık yapmak gibi genel değişikliklerle değiştirilmek üzere saldırıya uğrar. Bu fikir, css stil sayfalarına benzer. Yapılandırma dosyası Değişikliğin adından önce dolar işareti gibi ek semboller koymayın. Bazhanny'nin arkasındaki değişikliğin değerleri, sanki dekіlkoh sıralarından katlanmışlar gibi pençeye (podvіyni veya tek) serilir, yoga, trinі pençelerinde istiflenir.

    # küresel değişiklikler
    pageTitle = "(!LANG:(!LANG:Belge listesi)"!} !}
    bodyBgColor = #000000
    tabloBgColor = #000000
    satırBgColor = #00ff00
    pageTitle = "(!LANG:(!LANG:Makalelerin listesi)"!} !}
    Giriş = """
    satır sayısı. Bu yoga gerekli
    üç pençeye koy." ""
    # ekli bölüm
    [.Veri tabanı]
    ana bilgisayar=yerel ana bilgisayar
    db=kitap
    kullanıcı=nina
    geçmek=123

    Yapılandırma dosyası birkaç bölümden (bölümlerden) katlanabilir ve bazı durumlarda çok çeşitli bölümler için özelleştirilebilir. Kare tapınaklarda Im'ya bölümler polagaє. Yapılandırma dosyasının suç bölümleri genel olarak değiştirilebilir - kokular aynı bölümde yer almaz ve her zaman yapılandırma dosyası yüklendiğinde alınır. Sanki bir bölümden yararlanılıyormuş gibi, її değişiklikleri ve küresel değişiklikler yapılıyor. Sanki çekirdeği değiştiriyormuş gibi, küresel olarak değişiyormuş gibi, değişen bölümler gibi, o zaman değişen bölümler kazanacak. Bir bölümün ortasında hala iki değişikliği adlandırırsanız, bir dinlenme olacaktır. Yukarıdaki uygulamanın iki bölümü vardır - pageTitle, bodyBgColor, tableBgColor ve rowBgColor genel değişiklikleri dışında Müşteri ve Veritabanı.

    Değişikliğin veya bölümün anlamını yakalayabilmek için bu isimlerin önüne bir nokta koymak gerekir. Şu anda, veri yapılandırma dosyası okunamıyor. Uygulamada, Veritabanının bağlantılı bir bölümünü ekledik, böylece o kişisel hesabın şifresini tanımak mümkün olmadı, böylece veritabanını geri yüklemek için girilebilir.

    (PHP 4, PHP 5, PHP 7)

    str_replace- Her şeyi değiştirin, bir satır girin, bir satır isteyin, değiştirin

    Tanım

    Bu işlev, bir satırı veya bir diziyi döndürür, konu içindeki tüm arama girişleri replace ile değiştirilir.

    Kural olarak, sormak/değiştirmek için kuralları katlamanıza gerek yoktur (örneğin, normal virazi), fonksiyon seçimi daha kısadır preg_replace().

    Parametre listesi

    Ara ve değiştir - diziler gibi, sonra str_replace() vicorist cilt anlamı arama ve konu değiştirme için ayrı bir diziden. Değiştirme dizisinde daha az öğe varsa, aramada daha düşük, ardından eksik değerler için satırı değiştirin, boş bir satır olacaktır. Arama bir diziyse ve değiştirme bir satırsa, o satırı arama dizisindeki dış görünüm öğesinin dizeleriyle değiştirin. Zvorotny vppadok çok önemli değil.

    Arama ve değiştirme diziler olduğundan, öğeleri baştan sona işlenir.

    Shukane anlamı, yani nasıl olduğunu biliyorsun iğne(kafa). Şakalaşan kişisel olmayan anlamlar için bir dizi kazanabilirsiniz.

    Yer değiştirmek

    Değeri değiştir araması için değiştir değeri aranacaktır. Zengin değerler için diziyi bükebilirsiniz.

    Ders

    Bir arama ve değiştirmenin yanı sıra bir aramanın gerçekleştirildiği bir satır veya dizi samanlık(Stig sina).

    Konu bir diziyse, değiştirme araması konu kaplama öğesinin üzerine gelecek ve işlevin sonucu bir dizi olacaktır.

    Aktarılırsa, gerçekleştirilen değiştirme sayısı belirlenir.

    dönüyorlar demek

    Bu işlev, bir satırı veya diziyi değiştirme değerleriyle döndürür.

    Uygulamak

    popo #1 str_replace()

    // çekmek
    $bodytag = str_replace("%body%", "siyah", " " );

    // mevcut değil: Hll Wrld f PHP
    $sesli harf = dizi("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
    $onlyconsonants = str_replace ($sesli harfler, "", "PHP'nin Merhaba Dünyası");

    // cezbedici: Her gün pizza, bira ve dondurma yemelisin
    $ifade = "Her gün meyve, sebze ve lif yemelisiniz.";
    $sağlıklı = array("meyveler", "sebzeler", "lif");
    $ nefis = dizi("pizza", "bira", "dondurma");

    $yeni ifade = str_replace($sağlıklı, $nefis, $ifade);

    // Umut: 2
    $str = str_replace("ll", "", "çok güzel bayan molly!", $count);
    yankı $say;
    ?>

    Popo #2 Potansiyel Numaraları Uygulayın str_replace()

    // Siparişi değiştir
    $str = "Satır 1 Satır 2 Satır 3 Satır 4 n";
    $sipariş = dizi("\r\n", "\n", "\r");
    $değiştir = "
    " ;

    // Silme işlemini tekrar geri almak için geri \r\n geri yükleyin.
    echo $newstr = str_replace ($sipariş, $değiştir, $str);

    // F'yi göster, çünkü A, B ile değiştirilir, ardından B, C ile değiştirilir, vb.
    // Sonuç olarak, E, F ile değiştirilecek ve değiştirmenin parçaları sağa hareket edecek.
    $arama = dizi("A", "B", "C", "D", "E");
    $değiştir = dizi("B", "C", "D", "E", "F");
    $konu = "A";
    echo str_replace($arama, $değiştirme, $konu);

    // Cins: elmalı ela bezelye (belirtilen nedenlerle)
    $harfler = dizi("ben", "profesyonel");
    $meyve = dizi("elma", "bezelye");
    $text = "Şundan bahsediyorum";
    $çıktı = str_replace($harfler, $meyve, $metin);
    yankı $çıktı;
    ?>

    notlar

    Saygı duymak: Bu işlev, iki biçimde veri işleme için güvenlidir.

    Koruma

    Değiştirmek için saygı

    çok yak str_replace() Levoruch'u değiştirirseniz, birden fazla değişiklik olması durumunda, önceki değeri başka bir değerde değiştirebilirsiniz. Bu taraftaki popoya bir bakın.

    Saygı duymak:

    Bu işlev büyük/küçük harfe duyarlıdır. Zafer str_place() değiştirmek için, büyük/küçük harfe duyarsız.

    Saygı duymak: 64-bit platformlarda PHP 7.0.0, satır uzunlukları için boş alana sahip değildir, 32-bit sistemlerde ve PHP'nin önceki sürümlerinde, satırlar 2 GB'den (2147483647 bayt) büyük olamaz.

    Sözdizimi

    Chotirma'yı farklı şekillerde atamak için birkaç yol kullanılabilir:

    • tek patiler
    • sallanan pençeler
    • nowdoc sözdizimi (PHP 5.3.0 ile başlayan)

    Tek bacak

    Bir satır belirlemenin en kolay yolu, її'yi tek bacaklara koymaktır (sembol " ).

    Sıranın ortasındaki tek ayağı kazanmak için її ters eğik çizgiyle ( \ ). Kaçış çizgisini kendiniz yazmanız gerekiyor, yogayı çoğaltın ( \\ ). Saygısız eğik çizginin yazımının diğer tüm varyasyonları, birincil semboller olarak yorumlanacaktır: bu, kontrol eden diğer dizileri kazanmaya çalışacağınız anlamına gelir, bu nedenle \r veya \n, herhangi bir özel davranışın yerine geçecek şekilde görüleceklerdir.

    Eko "tse basit satır";

    Eko "Böylece satırlara ekleyebilirsiniz
    yeni satır sembolü ekseni,
    tamam tamam"
    ;

    // Görünüm: Yakos Arnold "Geri döneceğim" diyor
    Eko "Arnold bir keresinde "Geri döneceğim" demişti.;

    Eko "C:\\*.* dosyasını sildiniz mi?";

    // Görünüm: C:\*.* gördünüz mü?
    echo "C:\*.* sildiniz mi?" ;

    // Ekran: Tse tetiklenmeyecek: yeni satır
    Eko "Tse kovulmayacak: yeni bir satır";

    // Görüntü: $expand'i değiştirin ve $genişletmeyin
    Eko "$expand'i değiştirin ayrıca $genişletmeyin";
    ?>

    Podvini pençeleri

    Balenli bacaklara ("") bir satır döşendiği gibi, PHP bir sonraki özel karakter dizisini tanır:

    Anahtar diziler
    Sekans Değer
    \n yeni satır (ASCII'de LF veya 0x0A (10))
    \r taşıyıcı dönüşü (CR veya 0x0D (13) - ASCII)
    \T yatay tablolama (HT veya 0x09 (9) ASCII)
    \v dikey sekme (VT veya 0x0B (11) ASCII) (PHP 5.2.5'ten beri)
    \e kaçış karakteri (ASCII'de ESC veya 0x1B (27)) (PHP 5.4.4'ten beri)
    \F yandan besleme (FF veya 0x0C (12)'den ASCII'ye) (PHP 5.2.5'ten beri)
    \\ pirinç şiş
    \$ dolar işareti
    \" ayak
    \{1,3} sekizli sayı sistemindeki normal karakterle eşleşen, taklit eden ve bir bayta sığacak şekilde yeniden sıralanan karakter dizisi (tobto "\400" === "\000")
    \x(1,2) on altıncı sayı sistemindeki normal karakterle eşleşen karakter dizisi
    \u(+) UTF-8 dosyasıyla eşleşmesi için bir Unicode karakteriyle normal eşleşmeyle eşleşen karakter dizisi (PHP 7.0.0'da eklenmiştir)

    Sıra sıra, tek patiler halinde dizilmiş gibi, perdeleme, bir canlılığın simgesi olsa da, kendini perdeliyor. PHP 5.1.1'den önce, ters eğik çizgi \($var) arkadaş edinmemek.

    Heredoc

    Bir satır seçmenin üçüncü yolu, heredoc sözdizimini seçmektir: <<< . Bir sonraki operatörden sonra, tanımlayıcıyı, ardından satırın çevirisini belirtmek gerekir. Bundan sonra, satırın kendisi ve ardından eki kapatan aynı tanımlayıcı.

    Sıra suçlu tanımlayıcının eğrisinden başlayın, tobto. Vіn, ilk satır sırasında durmaktan suçludur. Ek olarak, tanımlayıcı PHP'deki diğer etiketlerle aynı adlandırma kurallarına tabidir: yalnızca alfasayısal karakterlere ve koltuk işaretine izin verir ve rakamlardan sorumlu değildir (koltuğun işaretine izin verilir).

    Uvaga

    Kapanan tanımlayıcıya sahip satırın, diğer karakterlerin intikamından suçlu olmadığına dikkat etmek daha da önemlidir, çünkü nokta kiminle suçlanır ( ; ). Ce tanımlayıcı anlamına gelir suçlu değil ve komalı bir leke için veya sonrasında günlük boşluklar veya tablolama işaretleri kullanmanın mümkün olmadığı. Kapanan tanımlayıcıdan önceki ilk karakterin, işletim sisteminizin anlamı olan yeni satırın sembolü olduğunu anlamak da önemlidir. Örneğin, macOS dahil UNIX sistemlerinde, \n. Tanımlayıcı eğri kapatıldığında, yeni bir satır da başlayabilir.

    Bu kural ihlal edildiğinden, tanımlayıcıyı kapatmanın "temizleme" olmadığı için, kapanış tanımlayıcısının günlük olması ve PHP'nin bu aramaya devam etmesi önemlidir. Her durumda, bu durumda, yanlış tanımlayıcı bulunmayacak, ancak komut dosyasının sonundaki satır numarasıyla ayrıştırmayı affedecektir.

    Vaka #1 Yanlış Sözdizimi Vakası

    sınıf foo(
    genel $bar =<<Çubuk
    EOT;
    // kapatan tanımlayıcıdan önceki giriş geçersiz
    }
    ?>

    Stok #2 Doğru sözdizimi stoğu

    sınıf foo(
    genel $bar =<<Çubuk
    EOT;
    }
    ?>

    Heredoc, sınıf başlatma için kötü olamaz. PHP 5.3 sürümünden başlayarak, değişim yalnızca heredoc'ta genişliyor, böylece değişikliklerinizi halledebilirsiniz.

    Heredoc metni böyle davranır, alt pençelerde, birlikte görünmedikleri bir sıra gibi. Bu, heredoc'ta patilerinizi taramanıza gerek olmadığı anlamına gelir, ancak daha önce olduğu gibi, tuş dizisinin tahminini söyleyebilirsiniz. Değişiklikler işlenir, ancak bu belgenin ortasında katlanmış değişiklikler varsa, satırlar halinde çalışırken olduğu kadar saygılı olmak gerekir.

    popo #3

    $str =<<satır örneği,
    ne sıra sıra,
    heredoc sözdizimine atıfta bulunarak.
    EOD;

    sınıf foo
    {
    var $foo;
    var$bar;

    __construct() işlevi
    {
    $bu -> foo = "foo";
    $bu ->
    }
    }

    $foo = yenifoo();
    $isim = "İmerek" ;

    Eko<<Benim adım "$isim". Ben farklıyım $foo -> foo .
    Şimdi ben viwoju'yum
    ( $foo -> çubuk [ 1 ]) .
    Büyük harf "A" girebilirsiniz: \x41
    EOT;
    ?>

    Benim adım "İmerek". Ben Foo'nun arkadaşıyım. Şimdi ben Wiwoju Bar2. Büyük harf "A" kullanabilirsiniz: A

    Verileri işlev bağımsız değişkenlerinden geçirmek için heredoc sözdizimini de değiştirebilirsiniz:

    5.3.0 sürümünden başlayarak, heredoc sözdizimini kullanarak statik değişiklikleri ve sınıf sabitlerini uygulamak mümkün hale geldi:

    popo #5

    // Statik değişiklikler
    işlev bilgisi()
    {
    statik $bar =<<Burada hiçbir şey yok...
    etiket;
    }

    // Sınıfta sabitlik/baskınlık
    sınıf foo
    {
    sabit BAR =<<vikoristannya sabitlerinin poposu
    FOOBAR;

    Genel $taban =<<Victoria alanının poposu
    FOOBAR;
    }
    ?>

    PHP 5.3.0 ile başlayarak, Heredoc tanımlayıcısını sallanan ayaklarla kaldırmak da mümkündür:

    Nowdoc

    Nowdoc - tekli bacaklardaki sıralar için aynı, koltuk altlarındaki sıralar için aynı heredoc. Nowdoc, heredoc'a benzer, ancak ortada günlük ikameleri kabul etmeyin. Bu tasarım, PHP kodunu veya diğer büyük metin bloklarını ekrana ihtiyaç duymadan geçirmek için idealdir. Somy şarabının SGML yapısına benzer bir trok var tim, scho voidlyaє blok metni, işleme atamaları değil.

    Nowdoc <<< , heredoc'ta muzaffer, ancak onu takip eden tanımlayıcı tek pençelerde, örneğin, <<<"EOT" . Heredoc tanımlayıcıları ve ayrıca nowdoc için, özellikle de o yakın tanımlayıcıya gidenler için ne yapacağınızı biliyorsunuz.

    Stok #7 Vikoristannya Nowdoc Stoku

    Eko<<<"EOD"
    popo metni
    bir dizi satır ödünç alır,
    Nowdoc sözdizimi ile ilgili yardım için. Zvorotni slishi zavzhd kelimenin tam anlamıyla döndü,
    örneğin, \\ ta \".
    EOD;

    Sonuç

    Nowdoc sözdiziminin yardımı için az sayıda satır ödünç alan bir metin örneği. Zvorotnі slіshі zavzhdi kelimenin tam anlamıyla alınır, örneğin, \ i \".

    Popo #8 Nowdoc dizesi değişkenlerle alıntı örneği

    /* Değiştirmelerle birlikte daha büyük katlanır dipçik. */
    sınıf foo
    {
    genel $foo;
    genel $bar;

    __construct() işlevi
    {
    $bu -> foo = "foo";
    $bu -> bar = dizi("Bar1", "Bar2", "Bar3");
    }
    }

    $foo = yenifoo();
    $isim = "İmerek" ;

    Eko<<<"EOT"
    Benim adım "$isim". Ben farklıyım $foo->foo.
    Şimdi farklıyım ($foo->bar).
    Büyük "A"yı getirmek senin hatan değil: \x41
    EOT;
    ?>

    Sonuç

    Benim adım "$isim". Ben farklıyım $foo->foo. Şimdi farklıyım ($foo->bar). Büyük "A"yı getirmek senin hatan değil: \x41

    popo #9

    sınıf foo(
    genel $bar =<<<"EOT"
    Çubuk
    EOT;
    }
    ?>

    Saygı duymak:

    Şimdi belge desteği PHP 5.3.0'a eklendi.

    obrobka zminnyh

    Sanki ayağın altında bir satır beliriyor veya bir heredoc'un yardımıyla, ortasındaki değişiklikler işleniyor.

    İki tür sözdizimi kullanıyorum: basit ve katlama. Basit sözdizimi daha kolay ve kullanışlıdır. Vin, dizinin anlamını, değişikliği değiştirme imkanı verir ( dizi) veya nesnenin gücü ( nesne) minimum zusil ile.

    Kıvırcık kemerler için katlanır sözdizimi kullanılabilir, böylece virazı hissedebilirsiniz.

    Basit sözdizimi

    Tercüman dolar işaretini nasıl yapar ( $ ), şaraplar o kadar çok sembolle doldurulur ki, değişikliğin adını doğru formüle etmek mümkündür. Adın sonunu doğru bir şekilde adlandırmak istiyorsanız, değişikliğin adını kıvrımlı yaya yazın.

    $suyu = "elma";

    echo "Biraz meyve suyu içti." . PHP_EOL;

    // Yanlış. "s" - değişikliğin adının ana sembolü ve $juice adının değişikliği.
    echo "Meyve sularından yapılmış meyve suyu içti." ;

    // Doğru. Yayın yardımı için değişikliğin adının sonunu kesinlikle emretti:
    echo "$( meyve suyu ) s'den yapılmış meyve suyu içti." ;
    ?>

    Sonuç

    Biraz elma suyu içti. Yapılmış meyve suyu içti. Elmalardan yapılmış bir meyve suyu içti.

    Benzer şekilde, bir dizi öğesi genişletilebilir ( dizi) veya nesnenin gücü ( nesne). Dizinlerde, dizide eğri olan bir kare yaya sahiptir ( ] ) dizine randevunun sonunu gösterir. Nesnenin yetkilileri için, basit değişiklikler gibi kuralların kendisi belirlenir.

    Stok #10 Basit sözdizimi stoku

    define("KOOLAID", "koolaid1");
    $meyve suyu = array("elma", "portakal", "koolaid1" => "mor");

    echo "Biraz $meyve suyu [ 0 ] meyve suyu içti." . PHP_EOL;
    echo "Biraz $meyve suyu [ 1 ] meyve suyu içti." . PHP_EOL;
    echo "Biraz $meyve suyu [koolaid1] suyu içti." . PHP_EOL;

    sınıf insanları(
    public $john = "John Smith" ;
    genel $jane = "Jane Smith" ;
    genel $robert = "Robert Paulsen";

    Genel $smith = "Smith";
    }

    $insanlar = yeni insanlar();

    echo " $people -> john biraz $meyve suyu [ 0 ] meyve suyu içti." . PHP_EOL;
    echo " $people -> john sonra $people -> jane'e merhaba dedi." . PHP_EOL;
    echo " $people -> john "in karısı $people -> robert'ı selamladı." . PHP_EOL ;
    echo " $people -> robert 2 $people -> demirciyi karşıladı." ; // çalışma
    ?>

    Sonuç

    Biraz elma suyu içti. Biraz portakal suyu içti. Biraz mor meyve suyu içti. John Smith deaki elma suyu içti. John Smith, Jane Smith'e merhaba dedi. John Smith'in karısı Robert Paulsen'i karşıladı, Robert Paulsen ikisini selamladı.

    PHP 7.1.0 desteği eklendi olumsuz sayısal indeksler

    Stok #11 Negatif sayısal indeksler

    $dizi = "dizi";
    Eko "İndeksli sembol -2 eski$dize[-2].", PHP_EOL;
    $string[-3] = "o";
    Eko "-3 konumundaki karakteri "o" olarak değiştirmek, saldırgan bir satır verir:$dizi.", PHP_EOL;
    ?>

    Sonuç

    Sembol, indeks -2 dorіvnyuє n. -3 konumundaki karakteri "o" olarak değiştirin, saldırgan bir satır verir: güçlü

    Katlanabilir bir şey için katlanabilir sözdizimi kullanın.

    Katlama (kıvırcık) sözdizimi

    Şarap, akıl için önemli olana değil, muzaffer katlanabilir konuşmaya izin verene katlanabilir denir.

    Bir skaler değişim, bir dizi elemanı veya bir satırda görünen bir nesnenin gücü olsun, sözdizimli bir satırda temsiller olabilir. Sadece virazı aynen böyle yaz, arka arkaya bir poz gibi ve sonra yogoyu koy { і } . Oskilki { Yalnızca aşağıdaki durumlarda sözdiziminin tanınabileceği ekranlara sahip olamazsınız. $ kesintisiz takip { . Zafer {\$ , kötüye kullanmak {$ . Dekіlka açıklayıcı örnekler:

    // Tüm afları göster
    error_reporting(E_ALL);

    $ harika = "harika" ;

    // Pratik yapmayın, bakınız: Tse (harika)
    echo "ce($harika)";

    // Pratik yapın, bakın: Harika
    echo "ce($harika)";

    // İşlem
    Eko "Tsey kare geniş( $kare -> genişlik ) 00 santimetre.";

    // Pratsiyuє, tuşlar, pençelere yerleştirme, sadece kıvırcık kolların sözdizimi ile pratik yapın
    echo "Çalışıyor: ($ dizi["anahtar"])";

    // İşlem
    echo "Oluştur: ($dizi[4][3])";

    // Neden yanlış ve neden $foo pozu veriyorsun
    // Satırlar. Başka bir deyişle, tse yak ve daha önce çalışacaksınız,
    // PHP'nin ale parçaları arka arkaya foo sabiti, tse vikliche
    // Pardon E_NOTICE (tanımsız sabit).
    Eko "Bu doğru değil:($dizi[foo][3])";

    // Uygulama. Ortada vikoristanny zengin diziler olduğunda
    // vekil kemerlerin sıraları
    echo "Çalışıyor: ($ dizi ["foo"] [3])";

    // Uygulama.
    echo "Çalışıyor mu: ". $dizi["foo"][3];

    Eko "Tse tezh pracyuє:($nesne->değerler[3]->isim)";

    Eko "Addaki değişikliğin değeri$isim: ($($isim))";

    Eko "Ad değişikliğinin değeri, sanki getName() işlevi döndürülmüş gibi:($( getName ())) ";

    Eko "\$object->getName() öğesini döndürerek adın değerini değiştirin:($( $nesne -> getName ())) ";

    // Çalışmayın, şunu gösterin: Her ne çevirirseniz getName(): (getName())
    Eko "Kim getName()'i çevirir: (getName())";
    ?>

    Bu sözdiziminin yardımı için, satırın ortasındaki nesnenin yetkilerine de erişim vardır.

    sınıf foo(
    var $bar = "Ben çubuğum." ;
    }

    $foo = yenifoo();
    $bar = "bar";
    $baz = dizi("foo", "bar", "baz", "quux");
    echo "($foo -> $bar)\n";
    echo "($foo -> ($baz[1]))\n";
    ?>

    Sonuç

    ben barım ben barım

    Saygı duymak:

    İşlevler, yöntem wiki'leri, statik sınıf değişiklikleri ve ortadaki sınıf sabitleri {$} , PHP sürüm 5'ten başlayarak, belirtilen değer, aynı bağlamda değiştirildiği için değiştirilecektir, bu sırada belirtilmemiştir. Tek kıvırcık yay seçimi ( {} ) fonksiyonların, yöntemlerin, sınıf sabitlerinin veya statik değişim sınıflarının değerlerine erişmek için pratik değildir.

    // Tüm afları göster
    error_reporting(E_ALL);

    sınıf biraları(
    const softdrink = "kök birası";
    public static $ale = "ipa";
    }

    $rootbeer = "A&W";
    $ipa = "Alexander Keith";

    // Yazdırma: A & W istiyorum
    echo "Bi ($( bira :: softdrink )) istiyorum \n" ;

    // Tse tezh pratsyuє, ekran: Alexander Keith "s istiyorum
    echo "Olmak istiyorum ($( bira :: $ale )) \n" ;
    ?>

    Yoganın değiştirdiği art arda bir sembole erişim

    Satırlardaki semboller, sıfırdan başlayarak, satırdan sonra kare kollar içinde satırın kulağına atanarak bükülebilir ve değiştirilebilir, örneğin $str . qiєї işaretinin satırını semboller dizisi olarak düşünün. 1'den fazla karakteri kaldırmanız veya değiştirmeniz gerekirse, işlevleri değiştirebilirsiniz. substr()і substr_replace().

    Saygı duymak: PHP 7.1.0 ile başlayarak, negatif değerler eklenir. Koku, sıranın sonundan usunennya'ya soruyor. Daha önce, af eşit olarak adlandırılan olumsuz evlat edinme E_NOTICE okuma saatinin altında (boş satırı çevirerek) veya E_UYARI bir saatlik kayıt için (satırı değiştirmeden doldurma).

    Saygı duymak: Bir satırdaki bir karakterden önce, örneğin $str(42) gibi ek kıvrımlı yaylar da arayabilirsiniz.

    Uvaga

    Satır sınırlarının ötesinde zsuv'da kayıt yapmaya çalışırken, ilk vardiyaya boşluklu satırı ekleyin. Tek bir tip bir bütüne dönüşmeyecek. Pardon pardon adı verilen yanlış ofset türü E_UYARI. Satırın ilk karakterinin üzerine yazılır. PHP 7.1.0'dan başlayarak, boş bir satır atamak ölümcül bir af gerektirir. Bu sefer bir boş bayta (NULL) basarak.

    Uvaga

    PHP'deki satırlar dahili olarak bayt dizileridir. Sonuç olarak, bir vardiya satırına erişmek veya bunları değiştirmek, büyük baytlı kodlama açısından güvenli değildir ve yalnızca tek baytlı kodlamalarda, örneğin ISO-8859-1 gibi satırlar halinde değiştirilebilir. .

    Saygı duymak: PHP 7.1.0'dan başlayarak, boş bir indeksin değiştirilmesi ölümcül bir affa neden oldu, bu sırada daha önce herhangi bir ilerleme olmadan bir diziye dönüştü.

    popo #12

    // İlk satır karakterinin kaldırılması
    $str = "Bu bir testtir." ;
    $ilk = $str[0];

    // Satırın üçüncü karakteri kaldırılıyor
    $üçüncü = $str[2];

    // Satır karakterinin geri kalanını kaldırıyoruz
    $str = "Bu hala bir test." ;
    $son = $dizi[strlen($str) - 1];

    // Satır karakterinin geri kalanını değiştir
    $str = "Denize bak" ;
    $str [strlen ($str) - 1] = "e";

    ?>

    PHP 5.4 ile başlayarak, art arda zsuv, sayıların intikamını almak için bir tam sayı veya bir satırda ayarlanmalıdır, aksi takdirde ileride görülecektir. Daha önce zsuv, üst üste görevler "foo", gecikmeden, dönüştü 0 .

    Popo #13 Vidminnosti mizh PHP 5.3 ve PHP 5.4

    $str = "abc";

    Var_dump($str["1"]);
    var_dump(isset($str["1"]));

    Var_dump($str["1.0"]);
    var_dump(isset($str["1.0"]));

    Var_dump($str["x"]);
    var_dump(isset($str["x"]));

    Var_dump($str["1x"]);
    var_dump(isset($str["1x"]));
    ?>

    PHP 5.3'teki vykonannya kogo poposunun sonucu:

    string(1) "b" bool(true) string(1) "b" bool(true) string(1) "a" bool(true) string(1) "b" bool(true)

    PHP 5.4'te bu örneği yazmanın sonucu:

    string(1) "b" bool(true) Uyarı: /tmp/t.php'de 7. satırda geçersiz string offset "1.0" string(1) "b" bool(false) Uyarı: /'de geçersiz string offset "x" 9. satırda tmp/t.php string(1) "a" bool(yanlış) string(1) "b" bool(yanlış)

    Saygı duymak:

    Yardım için farklı türlere (biraz dizi veya yeni arayüz uygulayan nesneler için) erişmeye çalışmak veya {} hareketi çevir BOŞ.

    Saygı duymak:

    PHP 5.5, sözdizimine yardımcı olmak için satır içi değişmezlerde karakter erişimi desteği ekledi veya {} .

    Satırların modifikasyonu için birçok kahverengi fonksiyon vardır.

    Ana işlevler, satır işlevleri ve genişletilmiş arama ve değiştirme için - Perl-sum düzenli değişkenlerin işlevleri bölümünde açıklanmıştır.

    Arka arkaya yeniden düzenleme

    Ek yardım için anlam bir satıra çevrilebilir (sicim), ancak işlevler strval(). Virazahta, muhtaç durumda dönüşüm otomatiktir. Vіdbuvaєtsya, eğer fonksiyonları vikoristovuєte yaparsanız Eko veya Yazdır aksi takdirde, değişikliğin anlamı art arda eşitse. Seramik Çeşitleri ve Manipülasyonlar bölümlerini tiplerle okumak daha anlaşılırdır. merak ediyorum settype().

    Masivi her zaman bir sıraya dönüşür "dizi", böylece dizide görüntüleyemezsiniz ( dizi), papaz Eko veya Yazdır, öğrenmek için, intikam almak için. Okremy öğesini gözden geçirmek için bir an için vikoristovyte schos echo $dizi["foo"]. Bunun uğruna dibe hayret etmek, nasıl hayal etmek / bütün yere bakmak.

    Türü değiştirmek için dönüştürmek için "Nesne" sen yaz sicim __toString sihirli yöntemi doğrulandı.

    Değer BOŞ her zaman boş bir sıraya dönüşür.

    Daha yüksek bachiti yapabileceğiniz gibi, doğrudan bir dizi diziye, nesneye dönüştürülür, ancak kaynaklar anlam, suç türleri hakkında aynı temel bilgileri vermez. İyileştirme değerini görmenin en iyi yolu, işlevi kazanmaktır. print_r()і var_dump().

    PHP'deki daha büyük değerler, tutarlı tasarruflar için yeniden düzenlenebilir. Bu yöntem serileştirme olarak adlandırılır ve ek işlevler için kullanılabilir. seri hale getir().

    Bir sayıdaki satırların yeniden düzenlenmesi

    Satır sayısal bir değer olarak tanındığından, o türden elde edilen değer aşağıda gösterildiği gibi belirlenir.

    ".", "e" veya "E" sembollerinden birinin intikamını almamak için sayının değeri tamsayılar arasına yerleştirilir ( PHP_INT_MAX), satır bir tam sayı olarak tanınır ( tam sayı). reshti vipadkiv'de kayan noktalı bir sayı ile girilir ( batmadan yüzmek).

    Değer, satırın koçan kısmına atanır. Satır doğru sayısal değerden başlarsa, değer tersine çevrilir. Aksi takdirde değer 0 (sıfır) olacaktır. Verne sayısal değeri - adımın yaklaşan neobov'yazkovy göstergesiyle ön işaretin arkasında bir veya daha fazla basamak (bir düzine noktanın yerini alabilir). Adımın göstergesi, sonraki bir veya daha fazla rakamla birlikte "e" veya "E" dir.

    $foo = 1 + "10.5"; // $foo bir kayan nokta değil (11.5)
    $foo = 1 + "-1.3e3"; // $foo yüzer değil (-1299)
    $foo = 1 + "bob-1.3e3"; // $foo bir tam sayı değil (1)
    $foo = 1 + "bob3"; // $foo bir tam sayı değil (1)
    $foo = 1 + "10 Küçük Domuz"; // $foo tamsayı değil (11)
    $foo = 4 + "10.2 Küçük Domuzcuklar"; // $foo bir kayan nokta değil (14.2)
    $foo = "10.0 domuz" + 1; // $foo yüzer değil(11)
    $foo = "10.0 domuz" + 1.0; // $foo yüzer değil(11)
    ?>

    Divaların dönüşümü hakkında rapor. strtod(3) Unix belgelerine bakın.

    Protesto etmek istiyorsanız, bu bölümü uygulayarak olsun, kopyalayıp yapıştırın ve o rahatsız edici satırı, böylece ne gördüğünüzü görebilirsiniz:

    echo "\$foo== $foo ; yazın: " . gettype($foo). "
    \n" ;
    ?>

    Yogayı bir hedefe yeniden yazarak karakter kodunu değiştirmek için kontrol etmeyin (örneğin, C'de yapabileceğiniz gibi). Karakterleri ASCII kodlarına ve geriye doğru dönüştürmek için işlevleri kullanın. ord()і chr().

    Satır türünün uygulama ayrıntıları

    7 yıl önce

    Belgeler bundan bahsetmez, ancak heredoc'un sonundaki noktalı virgülün kapatılması, gerçek bir noktalı virgül olarak ve bu nedenle sözdizimi hatalarından önceki gibi yorumlanır.

    $foo =<<abcd
    SON;
    ?>

    Bu değil:

    foo(<<abcd
    SON;
    );
    // sözdizimi hatası, beklenmeyen ";"
    ?>

    Noktalı virgül olmadan, ancak iyi:

    foo(<<abcd
    SON
    );
    ?>

    3 yıl once

    Dizeyi bir dizi karakter gibi bükebilirsiniz (C gibi)

    $a = "Dize dizisi testi";

    var_dump($a);
    // Döndür string(17) "Dize dizisi testi"

    var_dump($a);
    // string(1) "S" döndür

    // -- Dizi dökümü ile --
    var_dump((dizi)$a);
    // diziyi döndür(1) ( => dizi(17) "Dize dizisi testi")

    var_dump((dizi)$a);
    // string(17) "S" döndür

    Norihiori

    15 yıl önce

    Bir dizgenin ortasında bir güç nesnesi VE bir yöntem nesnesi çalıştırmak için karmaşık sözdizimini hızlandırabilirsiniz. Örneğin...
    sınıf Testi(
    genel $bir = 1;
    genel işlev iki()(
    dönüş 2;
    }
    }
    $test = yeni Test();
    echo "foo($test -> bir) bar($test -> iki())";
    ?>
    "foo 1 bar 2" çıktısı verir.

    Ancak, ad alanınızdaki tüm fiyatları isteyemezsiniz. Karmaşık sözdizimi "$" aradığı için sınıf sabitleri ve statik özellikler/yöntemler çalışmaz.
    sınıf Testi(
    const BİR = 1;
    }
    echo "foo (Test::ONE) çubuğu";
    ?>
    Bu, "foo (Test::one) bar" çıktısını verecektir. Sabitler ve istatistikler, dizede ara vermenizi gerektirir.

    3 yıl once

    "Sayılara dize dönüştürme" ile tutarlı olduğuna dikkat edin:

    If("123abc" == 123) yankı "(intstr == int) yanlış olarak doğru olarak test ediyor.";

    // Bir nokta bir sayıya eşittir, dize hatalı bir şekilde intstr'den int'ye dönüştürülür ve ardından test numarasıyla eşleşir.

    // if ve switch deyimleri gibi tüm koşullar için doğru (muhtemelen while döngüleri de)!

    // Bu, eğer test/galip/görev kullanıcı girişi ise, sadece bir tamsayı için bekliyor ve test ediyorsa, riskin ne kadar büyük olduğu anlamına gelir.

    // Görünüşe göre sadece düzeltme 123 için "123" olarak dizge olacak, bu yüzden dönüşüm olmuyor.

    ?>

    6 yıl önce

    Dizelerde baştaki sıfırlar (en az sürpriz) sekizli olarak kabul edilmez.
    Düşünmek:
    $x = "0123" + 0;
    $y=0123+0;
    echo "x є $x, y є $y"; // "x 123, y 83" yazdırır
    başka bir deyişle:
    * Kaynak kodundaki sayısal değişmezlerde baştaki sıfırlar є "sekizlik" olarak yorumlanır, c.f. strtol().
    * Dizelerdeki baştaki sıfırlar (örneğin kullanıcı tarafından gönderilen veriler), (örtülü veya açık olarak) tamsayıya dönüştürülürse є yoksayılır, ondalık sayı olarak kabul edilir, c.f. strtod().

    10 yıl önce

    Burada, sabitler ve diğer işlev çağrıları dahil olmak üzere, çift tırnaklı dizeler ve kaşlı ayraçlar sözdizimindeki rastgele ifadeler için heredocs için basit bir yakalama:

    // Hack beyanı
    function_expr ($v) ( dönüş $v ; )
    $_expr = "_expr";

    // Oyun alanımız
    tanımla("qwe" , "asd");
    tanımlamak("zxc", 5 );

    $a= 3 ;
    $b= 4 ;

    işlev C($a, $b) (dönüş$a+ $b; }

    // Kullanım
    Eko"ön{ $_ifade(1 + 2 )} gönder\n"; // "3 öncesi gönderi" çıktısı verir
    Eko"ön{ $_ifade(qwe)} gönder\n"; // "pre asd post" çıktısı verir
    Eko"ön{ $_ifade(C($a, $b)+ zxc* 2 )} gönder\n"; // "17 öncesi gönderi" çıktısı verir

    // Genel sözdizimi ($_expr(...))
    ?>

    2 yıl önce

    Bilgilerin en azından PHP sitesinin sağ tarafında yer aldığı yorumunu yapmakta fayda var diye düşünüyorum.

    Belirli bir anahtar anahtarıyla iki yönlü iletişimi ortadan kaldırmaya çalıştığınızı kontrol etmek için bir T_ENCAPSED_AND_WHITESPACE hatası verebilirsiniz. Kіlka, tse yak'ı en güzel hata mesajlarından biri olarak görüyor.

    Aşağıdaki gibi bir ifade:

    $meyve=dizi(
    "a"=> "elma",
    "B"=> muz,
    //vb
    );

    Yazdır "Bu bir$meyve[ "a"]"; // T_ENCAPSED_AND_WHITESPACE
    ?>

    tek tek parçalanacak.

    Aşağıdaki şekilde çözebilirsiniz:

    Yazdır"Bu bir$meyve[ a] " ; // anahtarın alıntısını kaldır
    Yazdır"Bu bir${ meyveler[ "a"]} " ; // Karmaşık Sözdizimi
    Yazdır"Bu bir{ $meyve[ "a"]} " ; // Karmaşık Sözdizimi varyasyonu
    ?>

    Daha doğal ve ifadenin dize dışında nasıl olacağına daha yakın olduğu için kalan varyasyon için kişisel tercihim var.

    PHP'nin ifadenin ortasındaki en küçük bağlantılardan birini seçmeme izin verip vermediği açık değil (bence eşit bir temelde), ama eşiğinde olabilirim, ya gerçek alıntıları almak için bir saat ise, string - 10 string'in anlamının bir parçası değilse, zaten ayıklanmış tırnak işaretleri sadece yoluna giriyor…?

    2 yıl önce

    İkisi de çalışmalı :(

    sınıftest yapmak{
    genel statik
    $var= "statik";
    genel sabit VAR =
    "sabit";

    kamu işlevi sayHelloStatik() {
    Eko
    Merhaba:{ $bu:: $var} " ;
    }

    kamu işlevi sayHelloConst() {
    Eko
    Merhaba:{ $bu::VAR)" ; //Ayrıştırma hatası: sözdizimi hatası, beklenmeyen ")", "[" bekleniyor
    }
    }

    $nesne=yenitest yapmak();
    $nesne-> sayHelloStatik();
    $nesne-> sayHelloConst();

    3 yıl once

    Deneyimlediğim bir şey, şüphesiz birine yardım edecek. . .
    Editörümde bu, sözdizimi HTML'yi ve $ yorumunu vurgulayacaktır:

    $html =<<<"EOD"
    $yorum
    EOD;

    Yardım için tsієї aynı rengi gösterir:

    $html =<<$yorum
    EOD;

    ile çalışmayı çok daha kolay hale getirmek

    11 yıl önce

    Düşüncelerinizi ifade etmek için verilerinizle ilgili önceki bilgileri okuyamazsınız ;)

    Ayrıca, tüm dizeler sayılara ayarlanabilir ("$a" > "$b") testinde), sonuçtaki sayılar kullanılır, aksi takdirde FULL dizeler karakter karakter karşılaştırılır:

    var_dump("1.22" > "01.23" ); // bool (yanlış)
    var_dump("1.22.00" > "01.23.00" ); // bool(doğru)
    var_dump("1-22-00" > "01-23-00" ); // bool(doğru)
    var_dump((batmadan yüzmek)"1.22.00" > (yüzer)"01.23.00" ); // bool (yanlış)
    ?>

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

    Şablon deseninde zbіgіv konu satırı aramasını kontrol edin ve їх'yi değiştirme ile değiştirin. Örneğin, limit parametresi belirtilirse, limit giriş şablonunu geçersiz kılar; Limit atlamaları veya -1 olması durumunda, şablona yapılan tüm girdiler değiştirilecektir.

    Değiştirme, \n veya (PHP 4.0.4'ten itibaren) $n kullanılarak yapılabilir ve diğer seçenek daha kısadır. Kaplama, alt direğin yuvarlak yaylarına yerleştirilen n "n" ile eşleşecek bir alt dize ile değiştirilecektir.

    Deseni bir varyasyonla değiştirirseniz, alt maskelere gönderirseniz, maskenin arkasında bir sayı varsa durumu suçlayabilirsiniz. Böyle bir zamanda, notasyon \\n bir af getirecektir: ilk alt maskeyi gönderin, ardından 1 sayısı gelir, \\11 olarak yazın, bu on birinci alt maskenin talebi olarak yorumlanacaktır. Bunu anlaşılmaz bir şekilde kullanabilirsiniz, böylece ilk alt maskedeki harfin izolasyonunda ve 1 rakamında gösterilen \ $ (1) 1 yapımını hızlandırabilirsiniz.

    Hangi örneğin sonucu olacaktır:

    Nisan1,2003

    İşlevin zamanı bir desen hatasıyla algılanırsa, konu değeri değişikliği döndürülür, aksi takdirde konunun varsayılan metni döndürülür.

    Fonksiyonun ilk üç parametresi preg_replace() tek boyutlu diziler olabilir. Düşüşte, bir dizi gaddar anahtar gibi, dizinin analizi sırasında, koku dizideki kokuyu giderecek şekilde koku sırayla alınacaktır. Kalıp ve değiştirme için dizi anahtarlarının belirtilmesi bağlayıcı değildir. Ancak, hepiniz aynı vikoristovuvaty indeksleri, şablonların ve satırların oluşturulması için, değiştirme, vikoristovyte işlevinde yer almak için ksort() cilt bakımı için.


    Örnek 2. İşlev bağımsız değişkenleri olarak sayısal dizinleri olan birden çok dizi preg_replace()

    $dize = "Hızlı kahverengi tilki tembel köpeğin üzerinden atladı.";$kalıplar [ 0 ] = "/hızlı/";
    $ desen[1] = "/kahverengi/";
    $kalıplar[2] = "/fox/"; $değiştirmeler[ 2 ] = "ayı" ;
    $değiştirmeler[1] = "siyah";
    $değiştirmeler [ 0 ] = "yavaş" ;preg_replace ($kalıplar, $değiştirmeler, $dize);
    ?>

    Sonuç:

    Sonuç:

    Tembel köpeğin üzerinde dolaşan yavaş siyah ayı.

    Örneğin, konu parametresi bir dizi olduğundan, dış görünüm öğeleri için bu şablon değişimini arayın. Döndürülen sonuç da bir dizi olacaktır.

    Ayrıca, model ve değiştirme parametreleri dizilerdir, preg_replace() Her iki dizideki kahramanın yardımına göre, işlem için eleman çiftine ve vicorist їх'ye göre, isteyin ve değiştirin. Değiştirme dizisi daha fazla öğe içeriyorsa, daha düşük kalıp, günlük öğelerin değiştirilmesi, değiştirme için boş satırlar alınacaktır. Kalıp durumunda, kalıp bir dizidir ve değiştirme bir satırda olduğundan, kalıp dizisinin kaplama elemanı tarafından kalıbın değiştirilmesi için bir arama yapılır (kalıp, dizinin tüm elemanları kullanılarak olacaktır. , ardından değiştirme satırı sabitlenecektir). Varyant, desen bir satırdaysa ve değiştirme bir diziyse, bir anlam ifade etmez.

    /e değiştiricisi, işlevin davranışını değiştirir preg_replace() Bu şekilde, gerekli ikamelerin değiştirilmesinden sonraki değiştirme parametresi PHP kodu olarak yorumlanır ve ancak bundan sonra değiştirme için değiştirilir. Zafer değiştirici, dikkatli olun: değiştirme parametresi doğru PHP kodu için suçlamaktır, aksi takdirde haftalık işlevin intikamını almak için arka arkaya preg_replace(), winicne sözdizimi affı


    Örnek 3. Dekilka şablonlarının değiştirilmesi

    $desenler = dizi( "/(19|20)(\d(2))-(\d(1,2))-(\d(1,2))/",
    "/^\s*((\w+))\s*=/");
    $değiştir = dizi("\3/\4/\1\2", "$\1 =");
    echo preg_replace ($desenler, $değiştir, "(startDate) = 1999-5-27");
    ?>

    Tsey popo canlı:

    Tüm HTML etiketlerini büyük harfe dönüştürün


    Örnek 5. HTML'yi metne dönüştürme

    // Çıktıdaki $document bir HTML belgesi olabilir.
    // Tüm HTML etiketlerini, javascript bölümlerini kaldırmamız gerekiyor,
    // Örnek karakterler. Ayrıca eylemleri değiştirmek gerekir
    // Eşdeğerleri olan HTML varlıkları.
    $arama = dizi( ""]*?>.*?"si", // javaScript'i görüntüle
    ""<[\/\!]*?[^<>]*?>"si" , // HTML etiketlerini görüntüle
    ""([\r\n])[\s]+"" , // Örnek karakterleri görüntüle
    ""&(quot|#34);"i", // HTML varlıklarını değiştir
    ""&(amp|#38);"i",
    ""&(lt|#60);"i",
    ""&(gt|#62);"i",
    ""&(nbsp|#160);"i",
    ""&(iexcl|#161);"i" ,
    ""&(cent|#162);"i" ,
    ""&(pound|#163);"i" ,
    ""&(kopya|#169);"i" ,
    ""(\d+);"e"); // php kodu gibi yorumla$değiştir = dizi("",
    "" ,
    "\\1" ,
    "\"" ,
    "&" ,
    "<" ,
    ">" ,
    " " ,
    chr(161),
    chr(162),
    chr(163),
    chr(169),
    "chr(\\1)" ); $metin = preg_replace($arama, $değiştir, $belge);
    ?>

    Bir saatin geri kalanında Habré'de PHP dilini tartışmak, sevindirici olmayan katlama sistemleri tasarlama olanağına yol açacaktır. Bununla birlikte, en ünlü bir düzine web çerçevesini (Zend Framework, Adept, CakePHP, CodeIgniter, LIMB, Symfony, MZZ ve diğerleri) inceledikten sonra, bazı kaynaklarda elementer eksikliğin çok çeşitli olduğunu gösteren çok çeşitli zivuvannyam buldum. optimizasyon.

    Bu konuyu daha teknik odaklı hale getirmek için, sonuçların anlaşılmasını kolaylaştırabilecek daha katı bir biçimde hazırlanmıştır.

    Otzhe, hadi gidelim ... Görev sınırda basit: tek ve ayak altı bacaklarda kalıp sıralarının düzgünlüğü üzerinde deneyler yapmak. Prensip olarak, besleme zinciri, PHP satır işlemenin özellikleriyle bağlantılı olarak uzun süre alakalı olacaktır.

    Hem Rusça hem de diğer dillerde temel betik optimizasyonu olan birkaç makale var. Sıralar hakkında çok az şey söylenir, ancak bu sembolleri (resmi belgelerde olduğu gibi doktor) değiştirmek için alt bacaklardaki sıraları “ayrıştırma” gerçeği atanır. Buna dayanarak, robotun podviynyh patilerindeki sıra sayısının daha povilniche olacağını varsaymak mantıklıdır, tek patilerdeki sıralarla aynı işlem.

    PHP'de sprintf işleviyle satır oluşturmanın en az bir yolu vardır. Hızlı tıklama işlevinin kullanılması ve ortadaki satırın ayrıştırılması yoluyla bu yöntemin "standart" olması gerektiğini varsaymak mantıklıdır.

    Ek bir not, bundan önce, size test komut dosyasının kodunu sunacağım: alt pençelerde satırlarda 2 olası robot varyantını aldatmak gerekir: basit ve "dişli" kodlama stilini geliştirmek. Arka arkaya koçanın üzerinde durmak için değişenler için, saygı tek başına varto değildir - pis koku sadece izmarittir:
    $string = "$_SERVER["HTTP_HOST"] - Ulyanovsk bölgesinin yönetimi değil.
    і
    $string = "($_SERVER["HTTP_HOST"]) - Ulyanovsk bölgesinin yönetimi değil.

    Bir numaralı test.
    Eh, her şeyden önce, tüm uyarılar kırıldı - çalışmanın sonuçlarını gösterme zamanı geldi. Test cihazının çıkış kodu bilinebilir.

    Ekran görüntüleri hipotezimin doğrulanmadığını gösteriyor. Unutulmaması gereken bir şey, sprintf aracılığıyla satırlarda robot hakkında bir kabul vardı. En önemlileri arka ayaklarla çalışılabilecek fonksiyonlardı.

    Önemsiz bir obmirkovuvannya durumundan sonra, açıklama kendiliğinden geldi: referans satırının kullanıldığı, ikamelerin yapıldığı sağdaki her şey çok kısa: ayrıştırıcının böyle bir satır boyunca geçişi sağdaki işe yaramaz Ancak burada, arka arkaya yapılan değişikliğin doğal ikamesinin, kaydırılmış stile öncelik verdiği görülebilir.
    Bunun için, birleştirme yaklaşımında bir zayıflık var: eklenen verilerin yükümlülükleri, sözleşmelerin yeniden ziyaret yükümlülükleri. Yıldızlar konşimentodan alınmıştır, zaten bilinen habratopik'te okuyabilirsiniz.

    Ancak, bu düşünceleri onaylamanız gerekir. Kimin için, böyle anlaşılmaz (benim için) bir davranışın nedenlerini tahmin etme olasılığındaki değişikliklerle birlikte başka bir teste ihtiyaç vardı. Beşinci versiyonda biraz daha ince ayar yapılmış olabilir (itiraf ediyorum, php'nin beşinci versiyonunda sadece 1 test yaptım: dizi öğelerini atlamak için).

    İki numaralı test.
    Başka bir hipotez: referans sırasını düşürmek, belki de, 1 numaralı testteki sonuca benzer şekilde, alt bacaklardaki sıraların kalıplanmasıyla bağlantılı, fonksiyon testçilerinin çalışmalarının yüksekliğinde bir artış sağlamak. Böyle bir durum. , teorik olarak korunmalı ve test edilmelidir. Bizim için, satırların gerekli ayrıştırılması ve bunun uğruna lekelenmiş daha fazla saat nedeniyle. Satırların tek pençelerde birleştirilmesi durumunda, ilk testtekiyle yaklaşık olarak aynı sonucu alacağınızı düşünüyorum; bu, tırnaklar_3() işlevinin tümünde bir saatlik çalışma için küçük bir değişiklik verecektir. komut dosyası (ancak üretkenlikte bir artış değil).

    Sadece olumlu olan ve hipotezi doğrulayan Visnovki. Referans satırındaki hafif bir artışla, hareketli bacaklara ve sprintf'e sahip robotların swidcode işlevlerini aşağı çekmek için büyük bir dürtü var.

    Tek pençelerde bir sıra satırın alçaltılması kendini gösterdi: ilk test için zamanın %36,75'ini aldı, bir diğeri için, Quote_3() işlevi komut dosyası için zamanın %33,76'sını aldı

    Pratik değer.
    Basit kelimelerimle konuşarak, verilerden soyutlayarak, bıyıkları çalıştırabilirsiniz: ikame çalışması gereken daha fazla satır, işlem-birleştirmenin daha hızlı olduğu kolaylık ne kadar büyükse, yılan o kadar düşük olur. koltuk altları. Gönüllüler gerekli yerleştirme parametrelerini (değiştirme sayısı, referans satırının uzunluğu, değiştirme satırlarının uzunluğu) deneyebilir, böylece kokular gece saatlerinin düzgünlüğünden tatmin olur.

    Eksen, vlasne ve hepsi bu. Eklenecek bir şey daha var, programlanmış dribnitsa'nın anlamadığı (“sirniki'de tasarruf” (c) Adelf demek istemiyorum) söylemek isteyenlere. Bu kadar incelikli bir şekilde bilerek ve saygı duyarak, tüm eşitlerinize optimize edilecek bir kod yazabilirsiniz ;)

    not:
    Testler, Zend Studio For Eclipse 6.0.0 (Debugger + Profiler dahil) yardımıyla gerçekleştirilmiştir.
    PHP sürüm 5.2.5
    Debian Linux işletim sistemi

    PPS:
    Radyum, bu testlerle sonuçlarınızı paylaşabilmeniz için. Bence bir kişinin o chi ve diğer ikame yöntemlerinin seçimine yönelik ihtiyacın nesnel bir değerlendirmesini satırlar halinde koymasına izin vermenin daha iyi olduğunu düşünüyorum. Ayrıca düzen ve tasarım stilinin sağlıklı bir eleştirmeni olacağım.

    Depolamak