Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Taci

    addikt

    válasz sztanozs #20799 üzenetére

    Igen, persze, köszönöm, ez megvan, csak azt akartam megérteni, hogy miért nem képes változóban tárolni, ha egyszer jól van kijelezve, és használva is. De akkor hagyom.
    Köszönöm a segítséget azért.

  • Taci

    addikt

    válasz sztanozs #20799 üzenetére

    Mint kiderült, mégsem értem...

    Ez a sor nekem elég összetett:
    $pattern = '/(&#(?:X[0-9a-f]*|0{0-8}*|{1-9}{0-9}*)(?!;))/i';

    Részekre szedve:
    - &# ezzel kezdődő mintákat keres
    - amik így folytatódhatnak:
    - X[0-9a-f]*: tehát a következő karakter az X (a végén lévő /i miatt kis- és nagybetű is), utána pedig a 16-os (HEX) számrendszer miatt 0-9 és a-f karakterek szerepelhetnek, a * miatt 0 vagy több számban. Szóval ez a része azt hiszem, rendben (mármint értem), ezzel van lekezelve, ha Hex kódolásban lennének a karakterek.
    - 0{0-8}*: Ez a rész nem teljesen tiszta. Ha jól értem, ez azt jelenti, hogy a &# után hány darab 0 karakter állhat, és itt az van megadva, hogy 0-tól 8 db-ig akármennyi. Tehát ez alapján a minta lehetne &#, &#0, &#00, ..., &#00000000? Ezt nem értem, hogy mire való - vagy rosszul értelmezem.
    - {1-9}{0-9}*: Ezt a részt egyáltalán nem értem. Kapcsos zárójel elvileg azt jelenti, hogy az előtte álló karaktert hányszor ismételje meg. De a | miatt a &# van előtte. Szóval nem értem.

    - A végén van még a (?!;). Ezt sem értem, hogy mit csinálhat.

    - És a legeljén lévő ?:-ról pedig csak a nevét találtam: Non-Capturing Groups. De a működését nem bírom felfogni. Talán "csak" a művelet sebességéhez van köze?
    (?: ), in contrast to ( ), is used to avoid capturing text, generally so as to have fewer back references thrown in with those you do want or to improve speed performance.

    - $replacement = '${1};'; Itt pedig az $1 a backreference lenne. A kapcsos zárójeleknek itt a Non-Capturing Groups-hoz van köze? Ezt sem igazán értem. Mert ugye itt adod meg, hogy ha megtalálja a mintát, akkor mire cserélje: eredeti + zárja le pontosvesszővel.
    Az én felületes "tudásommal" ha magam írtam volna, akkor ezt írtam volna:
    $replacement = '$1' . ';'; Miben különbözik az általad írt?

    Összességében a cél nyilván az, hogy felismerje, ha Dec vagy Hex kódolású karakterekről van szó (Dec:   Ẁ ♦ - Hex: ~ ˆ ∼ ), és ha nincs pontosvessző a végén, akkor egészítse ki vele.

    Csak a részletekben vesztem el, és szeretném érteni, mi-mit-miért csinál. (Bocsánat, ha evidens dolgokra kérdezek rá, próbáltam megérteni a részleteket, utána járni, de ez egy számomra elég bonyolult "képlet".)

    Ezt a pár dolgot pár mondatban el tudnád, magyarázni, kérlek?

Új hozzászólás Aktív témák