php-də ikiqat dırnaqlar. PHP-də tək və cüt dırnaqlı sətirlər arasında fərq nədir? Php-dən qaçan sitatlar

Bu qısa məqalə necə və harada istifadə olunacağını göstərir PHP-də sitatlar.

PHP-də tək dırnaqlar (apostroflar).

Tək dırnaqlar içərisində olan sətirlər PHP tərəfindən heç bir şəkildə işlənmir. Yəni tək dırnaqlar onların arasına daxil edilmiş mətni olduğu kimi təmsil edir.

// Düzgün əks-səda "Həyat necədir?"; echo "Həyat necədir? $name"; echo "Həyat necədir?".$name; // Yanlış əks-səda "Necəsən? $name";

Tək və cüt dırnaqlarda xüsusi simvollar

Məsələn, nişan simvolunun (\t) kəsik işarəsi və t hərfi kimi deyil, nişan simvolu kimi şərh edilməsini təmin etmək üçün tab simvolunu ehtiva edən mətn sətrini qoşa dırnaq işarəsinə daxil etməlisiniz. Siz yalnız tək dırnaq içərisində \' və \\ istifadə edə bilərsiniz. Bütün digər qaçış ardıcıllıqlarına (\n, \r, \$ və s.) tək dırnaq işarələri daxilində icazə verilmir.

// Yanlış əks-səda "Necəsən?\n"; // Düzgün əks-səda "Necəsən?\n";

Sətir daxilində qoşa dırnaqlardan qaçmaq üçün dırnaqları tərs xəttdən əvvəl qoyun \" .

// Yanlış əks-səda "

Nə var nə yox?

"; // Düzgün əks-səda"

Nə var nə yox?

"; əks-səda"

Nə var nə yox?

";

PHP-də ikiqat sitatlar

Qoşa dırnaq içərisində olan mətn çox fərqli şəkildə işlənir. Məsələn, qoşa dırnaq içərisində olan dəyişənlər öz qiymətləri ilə əvəz olunur. Bu, tərtib etməyi rahat edir SQL sorğuları qoşa dırnaqlardan istifadə etməklə.

$query = "Cədvəl INSERT INTO (poçt, müəllif, mətn, tarix) VALUES ("$id","$author","$text","$tarix"");

Sətirləri formatlamaq üçün hansı növ sitatlardan istifadə etməliyəm - apostroflar və ya klassik qoşa dırnaqlar?

Gəlin PHP-də cüt və tək dırnaqlar arasındakı fərqə baxaq və hansından istifadə edəcəyimizi öyrənmək üçün nümunələrdən istifadə edək.

Üçün dəyişənlər və qaçış ardıcıllığı xüsusi simvollar, tək dırnaq içərisində olan sətirlərdə baş verənlər işlənmir. Apostroflarla əhatə olunmuş sətirlər PHP tərcüməçisi tərəfindən qoşa dırnaqlarla əhatə olunmuş oxşar sətirlərə nisbətən daha sürətli işlənir.

Burada səbəb sadədir: PHP tərcüməçisi əlavə olaraq ikiqat dırnaq içərisindəki sətirləri dəyişənlərin olub-olmadığını yoxlayır və onlar tapılarsa, dəyişənin adının əvəzinə onun dəyəri sətirə daxil edilir. Lakin apostroflarla əhatə olunmuş sətir tərcüməçi tərəfindən adi mətn kimi qəbul edilir və PHP bu sətirlərdə heç bir transformasiya həyata keçirmir. Düşünürəm ki, tək dırnaqlarda sətirlərin işlənməsi istənilən halda daha sürətli olacaq.

Əvvəlcə sətri necə təyin edəcəyimizi təsvir edək və sonra tək dırnaqlarda sətirləri emal etməyin nə qədər sürətli olacağını yoxlayaq.

Sətri müəyyən etməyin ən sadə yolu onu tək dırnaq (") içərisinə daxil etməkdir. Tək dırnaqlı sətir daxilində tək dırnaqlardan istifadə etmək üçün onlardan əvvəl tərs xətt (\) olmalıdır, yəni qaçır. tək sitatdan əvvəl və ya sətrin sonunda olmaq üçün onun dublikatını çıxarmalısınız. Əgər hər hansı digər simvoldan qaçmağa cəhd etsəniz, əks kəsik işarəsi də çap olunacaq.

Tək dırnaqlardan istifadə nümunəsi:
// Çıxış: Sadə sətir
echo "Sadə simli";
// Çaplar: Mən buradayam
echo "Mən buradayam";
// Çıxış: Bu əlavə etməyəcək: \n yeni sətir
echo "Bu əlavə etməyəcək:\nyeni sətir";
// Nəticələr: $example dəyişəni də əvəz edilməyəcək
echo "$example dəyişəni də əvəz edilməyəcək"; Əgər sətir qoşa dırnaq (") içərisindədirsə, PHP xüsusi simvollar üçün daha çox qaçış ardıcıllığını tanıyır və eyni zamanda sətirdəki dəyişən adının dəyərini əvəz edir. Tək dırnaqlarda olduğu kimi, qoşa dırnaq içərisində ikiqat dırnaqdan istifadə etmək üçün sitatlar, onlardan əvvəl əks kəsik işarəsi (\) olmalıdır.

Qoşa dırnaq işarələrindən istifadə nümunəsi:
// Çıxış: Sadə sətir
echo "Sadə simli";
// Nəticələr: Şirkət "Snowdrop"
echo "Şirkət \"Qardelen\"";
// Çıxış: Bu, yeni bir xəttə səbəb olacaq
echo "Bu, yeni sətirə keçəcək \n";
// Çıxış: Dəyişən əvəz olunacaq
$example = "əvəz ediləcək";
echo "Dəyişən $example"; Siz həmçinin yadda saxlamalısınız ki, "\n" (yeni sətir), "\r" (karetanın qaytarılması) ardıcıllığı HTML deyil, düz mətn üçündür. Beləliklə, brauzerdə dəyişiklikləri görməyəcəksiniz (yalnız mənbə kodu səhifələr).

Tək dırnaqların qoşa dırnaqlardan nə qədər sürətli olduğunu öyrənək. Ölçmələr üçün qısa bir test skripti yazacağıq və dərhal qeyd edəcəyik ki, əgər siz onu özünüz sınaqdan keçirsəniz, PC və ya serverinizin avadanlıqlarından asılı olan nəticələr fərqli olacaq.
// Döngənin əvvəlində vaxt damğasını qaytarın
$start = microtime(doğru);
// 1 milyon iterasiya üçün dövrə yaradın
üçün ($i = 0; $i< 1000000; $i++) {
$text = "Budur simvol sətri";
}
// sərf olunan vaxtı hesablayın
$zaman = (mikrozaman(doğru) - $start); Nəticə: 0,09 saniyə.

Tək dırnaqları qoşa dırnaqlarla əvəz etsək:
$text = "Budur simvol sətri"; Nəticə 0,10 saniyə olacaq.

Gördüyünüz kimi, mətn sətirlərindən istifadə edərkən icra müddətindəki fərq çox azdır, hətta onun ümumiyyətlə olmadığını söyləmək olar. Əyləncə simli və dəyişəni birləşdirməyə çalışdığımız zaman başlayır.
$text = "Budur $i simvol sətri"; və ya
$text = $i."Budur simvol sətri"; Nəticə təxminən: 0,27 saniyə.

Fərq olduqca nəzərə çarpır. Dəyişənlər sətirə əlavə edildikdə birləşdirici və qoşa dırnaqlar performansa açıq şəkildə təsir göstərir.

Server kodu emal edərkən, dəyişənlər, sabitlər və s. üçün ikiqat dırnaqların bütün məzmununu yoxlayır. Bu vaxt tələb edir. Server isə tək dırnaqlar arasında olanı hazır mətn kimi emal edir və orada nə olduğuna əhəmiyyət vermir. Tək və ikiqat dırnaqların performansı arasındakı fərq çox kiçikdir, lakin yüksək yüklənmiş bir layihə inkişaf etdirirsinizsə, bir neçə millisaniyə qənaət artıq bir qələbədir.

PHP-də sətir istənilən uzunluqdakı simvollar toplusudur. C-dən fərqli olaraq, sətirlər proqrama heç bir şəkildə təsir etməyəcək null simvolları da ehtiva edə bilər. Başqa sözlə, sətirlərdən binar məlumatları saxlamaq üçün istifadə edilə bilər. Sətin uzunluğu yalnız pulsuz RAM miqdarı ilə məhdudlaşır.

PHP-də simvol baytla eynidir, yəni tam olaraq 256 fərqli simvol mümkündür. Bu həm də o deməkdir ki, PHP-nin yerli Unicode dəstəyi yoxdur. Bəzi Unicode dəstəyi funksiyalar tərəfindən təmin edilir utf8_encode()utf8_decode() .

Sətir standart funksiyalardan istifadə etməklə asanlıqla işlənə bilər və siz onun hər hansı simvoluna birbaşa daxil ola bilərsiniz.

Simli dəyişənin sadə nümunəsi:

$a= "Bu, sadəcə sətir dəyişənində saxlanılan mətndir";
echo $a ; //Çıxışlar "Bu, sadəcə sətir dəyişəninə yazılmış mətndir"
?>

İndi verilənlər tipinin sintaksisinə ətraflı nəzər salaq. simli.

Sətir növünün sintaksisi

Bir sətir üç fərqli şəkildə müəyyən edilə bilər.

Bir sətri təyin etməyin ən sadə yolu onu tək dırnaqlara daxil etməkdir (simvol " ).

Bir çox başqa dillərdə olduğu kimi sətir daxilində tək sitatdan istifadə etmək üçün ondan əvvəl tərs xətt işarəsi olmalıdır ( \ ), yəni onu ekranlaşdırın. Əgər tərs kəsişmə tək sitatdan əvvəl gəlməlidirsə və ya sətrin sonunda olmalıdırsa, onu dublikat etməlisiniz. Nəzərə alın ki, hər hansı digər simvoldan qaçmağa cəhd etsəniz, əks xətt də çap olunacaq! Beləliklə, ümumiyyətlə əks xətdən qaçmağa ehtiyac yoxdur.

Digər iki sintaksisdən fərqli olaraq, daxil edilmiş sətirlərdə baş verən xüsusi simvollar üçün dəyişənlər və qaçış ardıcıllığı, yox emal olunur.

Tək dırnaqlardan istifadə nümunəsi:

əks-səda "bu sadə bir simdir";

Echo "Siz həmçinin sətirlərə daxil edə bilərsiniz
yeni sətir simvolu beləliklə,
çünki normaldır"
;

// Nəticə: Arnold bir dəfə dedi: "Mən qayıdacağam"
əks-səda "Bir gün Arnold dedi: "Mən qayıdacağam.";

Echo "C:\\*.* silmisiniz?";

// Nəticələr: C:\*.* silmisiniz?
echo "C:\*.* silmisiniz?" ;

// Çıxış: Bu əlavə etməyəcək: \n yeni sətir
əks-səda "Bu əlavə etməyəcək:\nyeni sətir";

// Nəticələr: $expand və $either dəyişənləri əvəz edilmir
əks-səda "$expand və $hər iki dəyişən əvəz edilmir";
?>

Sətir qoşa dırnaq içərisindədirsə ( " ), PHP xüsusi simvollar üçün daha çox qaçış ardıcıllığını tanıyır:

Nəzarət ardıcıllığı cədvəli:

Ardıcıllıq Məna
\n yeni sətir (ASCII-də LF və ya 0x0A (10))
\r vaqonun qaytarılması (ASCII-də CR və ya 0x0D (13))
\t üfüqi nişan (ASCII-də HT və ya 0x09 (9))
\\ əks kəsik
\$ dollar işarəsi
\" ikiqat sitat
\{1,3} müntəzəm ifadəyə uyğun gələn simvollar ardıcıllığı, səkkizlik say sistemində simvol
\x(1,2) müntəzəm ifadəyə uyğun simvol ardıcıllığı, onaltılıq say sistemində simvol

Bir daha xatırlayaq ki, əgər siz hər hansı digər simvolu xatırlatmaq istəyirsinizsə, əks sətir də çap olunacaq!

Sətirləri təyin etməyin başqa bir yolu istifadə etməkdir heredok sintaksisi ("<<< "). Sonra<<< необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

Bağlama identifikatoru sətrin birinci sütunundan başlamalıdır. Bundan əlavə, identifikator PHP-də bütün digər teqlər kimi eyni adlandırma qaydalarına əməl etməlidir: yalnız alfasayısal simvollardan və alt xəttdən ibarət olmalıdır və rəqəmsiz və ya alt xətt ilə başlamalıdır.

Diqqət! Qeyd etmək çox vacibdir ki, bağlanan identifikator sətirində nöqtəli vergüldən başqa heç bir simvol yoxdur ( ; ). Bu o deməkdir ki, identifikator və nöqtəli vergüldən əvvəl və ya sonra heç bir boşluq və ya nişan ola bilməz. Həmçinin başa düşmək lazımdır ki, bağlanan identifikatordan əvvəlki ilk simvol əməliyyat sisteminiz tərəfindən müəyyən edilmiş yeni sətir simvolu olmalıdır. Məsələn, Windows®-da bu \r.

Bu qayda pozularsa və bağlanma identifikatoru "təmiz" deyilsə, bağlanan identifikator itkin sayılır və PHP onu daha da axtarmağa davam edəcək. Bu halda düzgün bağlama identifikatoru heç vaxt tapılmırsa, bu, skriptin sonundakı sətir nömrəsi ilə işləmə zamanı xətaya səbəb olacaq.

Heredok-mətn ikiqat dırnaq içərisində olan sətir kimi davranır, onlar olmadan. Bu o deməkdir ki, heredoc-da sitatlardan qaçmağa ehtiyac yoxdur, lakin siz yenə də yuxarıdakı qaçış ardıcıllıqlarından istifadə edə bilərsiniz. Dəyişənlər işlənir, lakin heredoc daxilində kompleks dəyişənlərdən istifadə edərkən sətirlərlə işləyərkən olduğu kimi diqqətli olmaq lazımdır.

Heredoc sətirinin müəyyənləşdirilməsinə misal:

$str =<<Nümunə xətti,
bir neçə xətti əhatə edir,
Heredoc sintaksisindən istifadə edir.
EOD;

/* Dəyişənlərlə daha mürəkkəb nümunə. */
sinif foo
{
var $foo ;
var $bar ;

foo() funksiyası
{
$this -> foo = "Foo" ;
$this -> bar = array("Bar1" , "Bar2", "Bar3" );
}
}

$foo = yeni foo();
$name = "Adım" ;

Echo<<Mənim adım "$name"dir. Mən $foo yazıram-> foo.
İndi mən nəticə çıxarıram
( $foo -> bar [ 1 ]) .
Bu, böyük "A" hərfini çıxarmalıdır:
\x41
Haqqımızda Şirkətin Adı: EOT;
?>

Mən PHP proqramlaşdırması üzrə mütəxəssis deyiləm, lakin PHP-də tək və bəzən ikiqat dırnaq içərisində olan sətirli bəzi kodu niyə görəndə bir az çaşqınlıq içindəyəm.

Mən sadəcə onu bilirəm ki, .NET və ya C dilində, əgər tək dırnaq içərisindədirsə, bu, sətir deyil, simvol deməkdir.

Həll

Nəyi bilməlisən

$a = "ad"; $b = "mənim $a"; == "mənim adım" $c = "mənim $a"; != "mənim adım"

PHP-də insanlar "a" , "my name" , "abc xyz" kimi sabit sətri təyin etmək üçün tək dırnaq işarələrindən istifadə edir, eyni zamanda "a $b $c $d" kimi identifikatoru ehtiva edən sətri təyin etmək üçün qoşa sitatdan istifadə edirlər.

Və başqa bir şey

"Mənim adım" əks-sədası;

-dən daha sürətli

"Mənim adım" əks-sədası;

"mənim" sədası. $a;

-dən daha yavaş

Echo "mənim $a";

Bu, istifadə olunan digər sətirlər üçün doğrudur.

PHP-də tək dırnaqlardakı mətn sətir dəyəri kimi qəbul edilir, qoşa dırnaqlardakı mətn isə dəyişənləri onların dəyərini dəyişdirərək təhlil edəcək.

$test = "dəyişən"; echo "Salam cənab $test"; // çıxış belə olacaq: Hello Mr dəyişən əks-səda "Salam cənab $test"; // çıxış belə olacaq: Salam cənab $test

Burada qoşa sitat dəyəri təhlil edir və tək sitat sətir dəyəri kimi qəbul edilir ($test dəyişənini təhlil etmədən).

İç-içə simvolların hər iki növü sətirdir. Bir növ kotirovkadan başqa bir növ kotirovkanı yekunlaşdırmaq üçün istifadə etmək rahatdır. """ və """ . Sitat növləri arasında ən böyük fərq ondan ibarətdir ki, iç-içə identifikator istinadları tək dırnaqlar içərisində deyil, qoşa dırnaq içərisində əvəz olunur.

Sətir simvollar toplusudur. PHP-də simvol baytla eynidir, yəni tam olaraq 256 fərqli simvol mümkündür. Bu həm də o deməkdir ki, PHP-nin yerli Unicode dəstəyi yoxdur.Bəzi Unicode dəstəyi utf8_encode() və utf8_decode() funksiyaları tərəfindən təmin edilir.

Qeyd: Sim çox böyük olarsa problem yoxdur. PHP tərəfindən qoyulan sətirlərin ölçüsünə praktiki olaraq heç bir məhdudiyyət yoxdur, ona görə də onların uzunluğundan narahat olmaq üçün heç bir əsas yoxdur.

Sintaksis

    Bir sətir üç fərqli şəkildə müəyyən edilə bilər.

Tək sitatlar

Sətiri təyin etməyin ən sadə yolu onu tək dırnaqlara (" simvolu) daxil etməkdir.

Sətir daxilində tək sitatdan istifadə etmək üçün, bir çox başqa dillərdə olduğu kimi, ondan əvvəl tərs xətt (\), yəni qaçış işarəsi olmalıdır. Əgər tərs kəsişmə tək sitatdan əvvəl gəlməlidirsə və ya sətrin sonunda olmalıdırsa, onu dublikat etməlisiniz. Nəzərə alın ki, hər hansı digər simvoldan qaçmağa cəhd etsəniz, əks xətt də çap olunacaq! Beləliklə, ümumiyyətlə əks xətdən qaçmağa ehtiyac yoxdur.

Qeyd: PHP 3-də bu halda E_NOTICE səviyyəli mesaj veriləcək.

Qeyd: Digər iki sintaksisdən fərqli olaraq, tək dırnaqlı sətirlərdə görünən xüsusi simvollar üçün dəyişənlər və qaçış ardıcıllığı işlənmir.

Echo "bu sadə bir simdir"; echo "Siz həm də sətirlərə yeni sətir simvolu əlavə edə bilərsiniz, çünki bu normaldır"; // Nəticələr: Arnold bir dəfə dedi: "Mən qayıdacağam" echo "Arnold bir dəfə dedi: "Mən qayıdacağam""; // Nəticələr: C:\*.* silmisiniz? echo "C:\\*.* silmisiniz?"; // Nəticələr: C:\*.* silmisiniz? echo "C:\*.* silmisiniz?"; // Nəticələr: Bu əlavə etməyəcək: \n yeni sətir echo "Bu əlavə etməyəcək: \n yeni sətir"; // Nəticələr: $expand və $either dəyişənləri əvəz edilmir echo "$expand və $either dəyişənləri əvəz edilmir";

İkiqat sitatlar

Əgər sətir qoşa dırnaq (") içərisindədirsə, PHP xüsusi simvollar üçün daha çox qaçış ardıcıllığını tanıyır:

Cədvəl 11-1. Escape Sequences

Təkrar edirik, əgər hər hansı digər simvolu xatırlamaq istəyirsinizsə, əks kəsik də çap olunacaq!

Lakin ikiqat dırnaqlı sətirlərin ən mühüm xüsusiyyəti dəyişənlərlə işləməkdir. Ətraflı təfərrüata baxın: simli emal.

Heredok

Sətirləri təyin etməyin başqa bir yolu heredoc sintaksisindən istifadə etməkdir ("

Bağlama identifikatoru sətrin birinci sütunundan başlamalıdır. Bundan əlavə, identifikator PHP-də bütün digər teqlər kimi eyni adlandırma qaydalarına əməl etməlidir: yalnız alfasayısal simvollardan və alt xəttdən ibarət olmalıdır və rəqəmsiz və ya alt xətt ilə başlamalıdır.

Diqqət

Qeyd etmək çox vacibdir ki, bağlanan identifikator sətirində nöqtəli vergül (;) istisna olmaqla, başqa simvollar yoxdur. Bu o deməkdir ki, identifikator girintili olmamalıdır və nöqtəli vergüldən əvvəl və ya sonra heç bir boşluq və ya nişan ola bilməz. Həmçinin başa düşmək lazımdır ki, bağlanan identifikatordan əvvəlki ilk simvol əməliyyat sisteminiz tərəfindən müəyyən edilmiş yeni sətir simvolu olmalıdır. Məsələn, Macintosh-da bu \r-dir.

Bu qayda pozularsa və bağlanma identifikatoru "təmiz" deyilsə, bağlanan identifikator itkin sayılır və PHP onu daha da axtarmağa davam edəcək. Bu halda düzgün bağlama identifikatoru heç vaxt tapılmırsa, bu, skriptin sonundakı sətir nömrəsi ilə işləmə zamanı xətaya səbəb olacaq.

Heredoc mətni ikiqat dırnaq içərisində olan sətir kimi davranır, onlar olmadan. Bu o deməkdir ki, heredoc-da sitatlardan qaçmağa ehtiyac yoxdur, lakin siz yenə də yuxarıdakı qaçış ardıcıllıqlarından istifadə edə bilərsiniz. Dəyişənlər işlənir, lakin heredoc daxilində kompleks dəyişənlərdən istifadə edərkən sətirlərlə işləyərkən olduğu kimi diqqətli olmaq lazımdır.

Misal 11-2. Heredoc simli tərif nümunəsi

$str =<<foo = "Foo"; $this->bar = massiv("Bar1", "Bar2", "Bar3"); ) ) $foo = yeni foo(); $name = "Adım"; əks-səda<<foo. İndi mən çıxarıram ($foo->bar). Bu, böyük "A" hərfini çıxarmalıdır: \x41 EOT;

Qeyd: Heredoc dəstəyi PHP 4-də əlavə edilmişdir.

Dəyişənlərin idarə edilməsi

Əgər sətir qoşa dırnaqlarda və ya heredoc istifadə edərək müəyyən edilirsə, onun daxilindəki dəyişənlər işlənir.

Sintaksis iki növdür: sadə və mürəkkəb. Sadə sintaksis daha asan və daha rahatdır. O, bir dəyişəni, massiv dəyərini və ya obyekt xassəsini emal etməyə imkan verir.

Mürəkkəb sintaksis PHP 4-də təqdim edilib və ifadəni əhatə edən qıvrım mötərizələrlə tanınır.

Sadə sintaksis

Tərcüməçi dollar işarəsi ($) ilə qarşılaşarsa, etibarlı dəyişən adı yaratmaq üçün mümkün qədər çox simvol tutur. Əgər adın sonunu təyin etmək istəyirsinizsə, dəyişən adını əyri mötərizələrə daxil edin.

$pivə = "Heineken"; echo "$beer's dad is great"; // işləyir, """ dəyişən adı üçün etibarsız simvoldur echo "O, bəzi $beers içdi"; // işləmir, "s" etibarlı dəyişən adıdır echo "O, bəzi $(pivə)s içdi"; // works echo "O ($pivə) içdi"; // işləyir

Massiv elementi (massiv) və ya obyektin (obyektin) xassəsi eyni şəkildə işlənə bilər. Massiv indekslərində bağlanan kvadrat mötərizə (]) indeks tərifinin sonunu göstərir. Eyni qaydalar sadə dəyişənlər üçün olduğu kimi obyekt xassələri üçün də tətbiq edilir, baxmayaraq ki, onları dəyişənlərlə olduğu kimi aldatmaq olmaz.

// Bu misallar xüsusi olaraq // sətirlərin daxilində massivlərdən istifadə haqqındadır. Sətirlərdən kənarda, // massivinizin sətir düymələrini həmişə dırnaq işarəsi içərisinə daxil edin və sətirlərdən (mötərizələrdən) kənar istifadə etməyin. // Bütün səhvləri göstərək error_reporting(E_ALL); $fruits = array("çiyələk" => "qırmızı", "banan" => "sarı"); // İşləyir, lakin nəzərə alın ki, o, sitat gətirilən sətirdən kənarda fərqli işləyir "A banan $fruitsdir."; //Works echo "A banan is ($fruits["banana"])."; // İşləyir, lakin PHP aşağıda təsvir olunduğu kimi əvvəlcə banan sabitini // axtarır. echo "Bir banan ($fruits)."; // İşləmir, əyri mötərizələrdən istifadə edin. Bu, emal xətasına səbəb olacaq. echo "Bir banan $fruits["banana"]dır."; // Əsərlərin əks-sədası "A banan is" . $fruits["banana"] . "."; // Works echo "Bu kvadrat $square->eni metr genişdir."; // İşləmir. Həll üçün mürəkkəb sintaksisə baxın. echo "Bu kvadrat $square->width00 santimetr genişlikdədir.";

Daha mürəkkəb bir şey üçün mürəkkəb sintaksisdən istifadə etməlisiniz.

Mürəkkəb (buruq) sintaksis

O, çətin başa düşüldüyü üçün deyil, mürəkkəb ifadələrdən istifadə etməyə imkan verdiyi üçün mürəkkəb adlanır.

Əslində, bu sintaksis ilə bir sətirdə ad məkanında olan istənilən dəyəri daxil edə bilərsiniz. Siz sadəcə olaraq ifadəni sətirdən kənarda yazdığınız kimi yazın və sonra onu ( və ) içərisinə daxil edin. Siz "("" işarəsindən qaça bilməyəcəyiniz üçün bu sintaksis yalnız $ dərhal sonra gələndə tanınacaq (. ("($") qaçmaq üçün "(\$" və ya "\($" istifadə edin). Bəzi nümunəvi nümunələr:

// Bütün səhvləri göstərək error_reporting(E_ALL); $böyük = "fantastik"; // İşləmir, çıxacaq: This is (fantastic) echo "This is ( $graat)"; // İşləyir, çıxacaq: Bu fantastik əks-sədadır "This is ($great)"; echo "Bu $(əla)"; // Works echo "Bu kvadratın eni ($square->en)00 santimetrdir."; // Works echo "Bu işləyir: ($arr)"; // Bu, $foo-nun // xəttindən kənarda etibarsız olması ilə eyni səbəbdən etibarsızdır. Başqa sözlə, bu hələ də işləyəcək, // lakin PHP əvvəlcə foo sabitini axtardığı üçün // E_NOTICE (müəyyən edilməmiş sabit) xətası atacaq. echo "Bu səhvdir: ($arr)"; // Əsərlər. Çoxölçülü massivlərdən istifadə edərkən həmişə içərisində qıvrımlı mötərizələrdən istifadə edin // sətirlər echo "Bu işləyir: ($arr["foo"])"; // Əsərlər. echo "Bu işləyir: " . $arr["foo"]; echo "Siz hətta yaza bilərsiniz ($obj->dəyərlər->ad)"; echo "Bu, $name adlı dəyişənin qiymətidir: ($($name))";

Sətirdəki simvola daxil olmaq və dəyişdirmək

Sətirdəki simvollar sətirdən sonra əyri mötərizələrdə sıfırdan başlayaraq onların ofsetini sətirin əvvəlindən təyin etməklə istifadə edilə və dəyişdirilə bilər.

Qeyd: Geriyə doğru uyğunluq üçün yenə də eyni məqsədlər üçün massiv mötərizələrindən istifadə etmək seçiminiz var. Lakin, PHP 4-dən başlayaraq bu sintaksis köhnəlmişdir.

Misal 11-3. Bəzi misal sətirlər

// Sətirin ilk simvolunu alın $str = "Bu bir sınaqdır."; $first = $str(0); // Sətirin üçüncü simvolunu alın $third = $str(2); // Sətirin son simvolunu alın $str = "Bu hələ sınaqdır."; $son = $str(strlen($str)-1); // Sətirin son simvolunu dəyişdirin $str = "Dənizə baxın"; $str(strlen($str)-1) = "Mən";

Faydalı funksiyalar və operatorlar

Sətirləri "." operatorundan istifadə etməklə birləşdirə bilərsiniz. (nöqtə). Nəzərə alın ki, "+" əlavə operatoru burada işləmir. Əlavə məlumat üçün String Operators-a baxın.

Sətirləri dəyişdirmək üçün çoxlu faydalı funksiyalar var.

Əsas funksiyalar sətir funksiyaları, təkmil axtarış və dəyişdirmə üçün müntəzəm ifadə funksiyaları (iki hissədə: Perl və POSIX qabaqcıl) bölməsində təsvir edilmişdir.

Həmçinin URL sətirləri üçün funksiyalar və sətirlərin şifrələnməsi/şifrinin açılması funksiyaları (mcrypt və mhash) mövcuddur.

Nəhayət, əgər siz hələ də axtardığınızı tapmamısınızsa, simvol tipli funksiyalara da baxın.

Sətirə çevirin

Siz cast (string) və ya strval() funksiyasından istifadə edərək dəyəri sətirə çevirə bilərsiniz. Sətir tələb olunan ifadələrdə çevrilmə avtomatik olaraq baş verir. Bu, echo() və ya print() funksiyalarından istifadə etdikdə və ya dəyişənin dəyərini sətirlə müqayisə etdikdə baş verir. Təlimatdakı Növlər və Tip Manipulyasiya bölmələrini oxumaq aşağıdakıları daha aydınlaşdıracaq. Həmçinin bax settype().

TRUE mantiqi dəyəri "1" sətrinə çevrilir və FALSE dəyəri "" (boş sətir) kimi təqdim olunur. Bu yolla siz dəyərləri hər iki istiqamətdə - Booleandan sətirə və əksinə çevirə bilərsiniz.

Tam ədəd və ya float onun rəqəmlərindən (üzən nöqtəli ədədlər üçün eksponent daxil olmaqla) ibarət ədədlə təmsil olunan sətirə çevrilir.

Massivlər həmişə “Array” sətirinə çevrilir, ona görə də siz massivin nəyi ehtiva etdiyini görmək üçün echo() və ya print() istifadə edərək onun məzmununu göstərə bilməzsiniz. Tək elementə baxmaq üçün echo $arr["foo"] kimi bir şey etməlisiniz. Bütün məzmunu necə göstərmək/baxmaq barədə məsləhətlər üçün aşağıya baxın.

Obyektlər həmişə "Obyekt" sətirinə çevrilir. Əgər siz sazlama məqsədləri üçün obyekt üzvü dəyişəninin dəyərini çap etmək istəyirsinizsə, aşağıdakı paraqrafları oxuyun. Lazım olan obyektin sinif adını almaq istəyirsinizsə, get_class() istifadə edin.

Resurslar həmişə "Resurs id #1" strukturu ilə sətirlərə çevrilir, burada 1 işləmə zamanı PHP tərəfindən ona təyin edilmiş unikal resurs nömrəsidir. Resurs növünü əldə etmək istəyirsinizsə, istifadə edin.

NULL həmişə boş sətirə çevrilir.

Yuxarıda gördüyünüz kimi, massivlərin, obyektlərin və ya resursların çıxarılması sizə dəyərlərin özləri haqqında heç bir faydalı məlumat vermir. Sazlama üçün dəyərləri çap etməyin daha yaxşı yolu print_r() və var_dump() funksiyalarından istifadə etməkdir.

Siz həmçinin davamlı saxlama üçün PHP dəyərlərini sətirlərə çevirə bilərsiniz. Bu üsul serializasiya adlanır və serialize() funksiyasından istifadə etməklə həyata keçirilə bilər. Əlavə olaraq, PHP quraşdırmanızda WDDX dəstəyi varsa, siz PHP dəyərlərini XML strukturlarına seriallaşdıra bilərsiniz.

Sətirlərin rəqəmlərə çevrilməsi

Əgər sətir ədədi dəyər kimi tanınırsa, nəticədə yaranan qiymət və növ aşağıdakı kimi müəyyən edilir.

Sətir ".", "e" və ya "E" simvollarından hər hansı birini ehtiva edərsə, float kimi tanınacaq. Əks halda tam ədəd kimi təyin olunacaq.

Dəyər sətrin başlanğıcı ilə müəyyən edilir. Sətir etibarlı rəqəmli dəyərlə başlayırsa, həmin dəyər istifadə olunacaq. Əks halda dəyər 0 (sıfır) olacaq. Etibarlı rəqəmli dəyər bir və ya daha çox rəqəmdir (onluq nöqtə ola bilər), isteğe bağlı olaraq əvvəl işarə, ardınca isə əlavə eksponentdir. Eksponent "e" və ya "E" və ardınca bir və ya daha çox rəqəmdir.

$foo = 1 + "10,5"; // $foo floatdır (11.5) $foo = 1 + "-1.3e3"; // $foo floatdır (-1299) $foo = 1 + "bob-1.3e3"; // $foo tam ədəddir (1) $foo = 1 + "bob3"; // $foo tam ədəddir (1) $foo = 1 + "10 Kiçik Donuz"; // $foo tam ədəddir (11) $foo = 4 + "10.2 Little Piggies"; // $foo floatdır (14.2) $foo = "10.0 donuz" + 1; // $foo floatdır (11) $foo = "10,0 donuz" + 1,0; // $foo floatdır (11)

Bu çevrilmə haqqında ətraflı məlumat üçün Unix sənədlərində strtod(3) bölməsinə baxın.

Bu bölmədəki nümunələrdən hər hansı birini sınamaq istəyirsinizsə, nə baş verdiyini görmək üçün onu və aşağıdakı sətri kopyalayıb yapışdıra bilərsiniz:

Echo "\$foo==$foo; yazın: " . gettype ($foo) . "
\n";

Bir simvolun kodunu tam ədədə çevirərək əldə etməyi gözləməyin (məsələn, C dilində edə bilərsiniz). Simvolları kodlarına və arxasına çevirmək üçün ord() və istifadə edin




Üst