Jump to content
php.lv forumi

Venom

Moderatori
  • Posts

    1,918
  • Joined

  • Last visited

Posts posted by Venom

  1. ja masīvā definēts indeksu skaits, e.g.

    $array=array

    (

    'name'=>...,

    'surname'=>...,

    );

     

    tad katram indeksam taisi atbilstošu kolonnu (kolonnas tipu pēc satura)

     

    ja vajadzīgs saglabāt masīvu ar arbitrāri garu elementu skaitu

    a) tabulā 2 kolonnas: masīva "identifikators", indekss, vērtība, augstākminētā piemērā:

    1|vārds|Jānis

    1|uzvārds|Kārklis

     

    select * from tabula where array_id='1'

    while(...fetch...)

    $array[$res['index']]=$res['value'];

     

    otrs varians: kolonna BLOB, saglabājam masīvu kā stringu

    `column`='{serialize($array)}';

    pie nolasīšanas $array=unserialize($res['column']);

     

    jautājumiem jābūt precīzākiem <_<

  2. Vai tad nu tiešām ir tik svarīgi savā maģiskajā izskatā ir tik liela nozīme tam, ka tur ir <div> nevis <table><tr><td></td></tr></table> ?

    Izskatā - nē.

    Renderingā un datu saņemšanā - jā.

     

    Tabula netiek renderēta pirms nav saņemts </table> tags (vai konstatēta tā prombūtne), jo vienmēr pēdējā šūnā var būt colspan/rowspan pa visu tabulu. Resp. tikai tad, kad ir saņemts </table>, tiek veidots režģis un dati salikti pa šūnām.

     

    Divi tiek renderēti uz reiz, kā neredzami taisnstūri un tajos uzreiz sabāzta info. Kad apstrādāta info par to "css", tie tiek pārvietoti/izplesti un parādīti.

     

    Teiksim, tev jāattēlo 10 šūnas, katras "datu ielasei" paiet 1 laika mērvienība.

    Ja tu rādīsi tabulu, tad paies 10 l.v. un pēc tam parādīsies visa tabula.

    Ja tu rādīsi divus, tad katru 1 l.v. parādīsies kaut kāds kontens, kur jau var sākt skatīt/lasīt.

     

    Un tagad :blink: SHOCKING:

    Ir tāda lieta, kā ārējie elementi un to lejuplādes taimauts. Teiksim, tev pēdējā tabulas šūnā jābūt skaitītājam, kas tiek izsaukts ar <script src=""> (kuram nau uzlikts defer), vai kādam flasham vai citam ilglādīgam objektam. Kamēr tas src nav saņemts, tabulu nevar sākt renderēt ("hvz, varbūt tas skripts izraksta pusi tabulas"). Pieņemsim, ka tas src atrodas uz cita servera, kurš ir vai nu pilnībā nogāzies vai ātrums xbytes/sec. Tad kamēr tas pilnībā tas nav pilnībā lejlādēts (hei, es izdomāju jaunu vārdu!) vai netiek sasniegts zināms timeouts (IE tas laikam bija ap 15 sek), VISS TABULAS SATURS NETIEK ATRĀDĪTS. Ok, daži pārlūki ignorē apstākli un uz tā rēķina ir "it kā ātrāki" (Opera), bet tamdēļ viņi arī ģļuko citviet.

     

    Diviem atkal ir ļoti vienkārša parent/child objektu saikne, kas strādā līdzīgi domino principam. Visi divi izvadīti, nopozicionēti. Bāc kādam divam jāpaplešas vairāk. Čeks: current.div.width>parent.div.width? vai drīkst paplest parent? nē/gāžam visu lejā (current.div.height>parent.div.height?...), jā - paplešam parent un čekojam viņa parentu līdz aizejam līdz "pamata" (the parent of all parents) elementam (analoģisks objektam, kas atbilsts <html>).

     

    Dēļ kā man nepatīk template sistēmas - ka viņām bieži ir tā pati "tabulu" semiotika. Viss outputs ielasīts mainīgajā, kas tiek "izgāzts" tikai pašās beigās. Tāpē pie lēniem savienojumiem lietotājs 10 sek blenž baltajos tīrumos (nedrīxt aizmirst, ka Alt+F4/Stop/Back vienmēr ir blakus), un tikai pēc tam "nobombardēts" ar htmlu (kas, turklāt, atkal var saturēt tabulas/flash/lielus img, kas tiks atkal lēni lādēti).

  3. Neesmu CSS advokāts, bet pašam kaut kas līdzīgs vajadzīgs (būtība taisīts tikai 3 CSS layouti, no kuriem izmantojs tikai 1).

    Reku mēģinājums nr.2. Viduča kluči turās kopā, un turās pa vidu "līdz pēdejam"

    <style type="text/css">
    div {border:1px solid red}
    </style>
    <div id="header" style="width:100%">header</div>
    <div id="main" align="center" style="width:100%">
    <div id="leftmenu" style="width:180px;float:left">left menu</div>
    <div id="rightmenu" style="width:130px;float:right">right menu</div>
     <div id="center" style="width:100%">
      <div id="box3" style="width:100%">middle top</div>
      <div id="box4" style="width:100%">middle center</div>
      <div id="box5" style="width:100%">middle bottom</div>
     </div><!-- center -->
    </div><!-- main -->
    <div id="footer" style="width:100%">footer</div>

    Pretjautājums: kur tad vidējai slejai jāspruk, kad logu samazina?

  4. vispār šajā gadījumā varētu melot. Vienīgais, 9 divi, laikam. Bet beidzot pieleca likt viducim normāli izplesties.

    <style type="text/css">
    div {border:1px solid red}
    </style>
    <div id="container" style="width:100%">
    <div id="header" style="width:100%">header</div>
    <div id="main" style="width:100%">
     <div id="leftmenu" style="width:180px;float:left">left menu</div>
     <div id="rightmenu" style="width:130px;float:right">right menu</div>
     <div align="center" style="width:640px">
      <div id="box3" style="width:100%">middle top</div>
      <div id="box4" style="width:100%">middle center</div>
      <div id="box5" style="width:100%">middle bottom</div>
     </div>
    </div>
    <div id="footer" style="width:100%">footer</div>
    </div>

  5. a) $lines=file($file);

    echo '<ol><li>'.implode('</li><li>',$lines).'</li></ol>';

     

    B) $fp=fopen($file,'r+');

    fwrite($fp,"rindiņa\n");

     

    'r+' Open for reading and writing; place the file pointer at the beginning of the file.

  6. tāpēc kā tabula tiek norenderēta un pēc tam izvadīta, vienreiz kā vesels

    divi kaut kur "karājas" un kad esi pārvietojis lapu uz augšu/leju pārlūks tos vienu pa vienam sāk "pārvietot", atstājot uz ekrāna švīkas, ur kur "novilkts"

     

    NB> joprojām nav neviena layouta kas normāli mācētu ļaut kolonnām izplesties

  7. alfs, dari vienkārši šādi:

    <?php
     $text = '[email protected] navmails [email protected] te ar nav @ mails [email protected]';
     $text = preg_replace('/([-_\.\w\d]+)@(([-_\w\d]+\.)+)(\w+)/mi', '<a href="mailto: \1 at \2\4" onclick="return(sm("\1", "\2\4"));">\1 at \2\4</a>', $text);
     echo $text;
    ?>

    man nepatīk tas, kas notiek, ja tavs preg tiek palaists pa virsu šādam tekstam:

     

    [email protected]

    <a href="mailto:[email protected]">[email protected]</a>

     

    <a href="mailto:<a href="mailto: mail_mail at domain.lv"

     

    deļ tā jau manā kļūdas, ka mēģinu izvairīties no tādas situācijas ;)

  8. update:

    #([^"\'><0-9a-z]|^)([0-9a-z][-_\.]?[0-9a-z]*@[0-9a-z]+[-.]?[0-9a-z]+\.[a-z]{2,})([^"\'><]|$)#mi

    note the |$ in the last brackets - neķēra adreses kas bija pašās teksta beigās bez kaut kāda punktuācijas simbola pēc tam

     

     

    izteiksmes paskaidrojums:

    a) mi beigās - multilīniju, caseless

     

    pirmais () - a) ^ sākumā iekš [] nozīmē "jebkurš simbols izņemot ...", tātad izņemot " un ' (lai atmestu situācijas href=_"|'[email protected]"|'), >, lai atmestu situācijas (<a ..._>[email protected]), < (visādam gadījumam), vai līnijas sākums |^

     

    tālāk seko paša email meklēšana, kur emails ir teksts, kas sākas ar vismaz vinu latīņu burtu vai ciparu, tālāk var saturēt -, _, vai . (man škiet, ka nedrīkstēja būt vairāki, ja kas []? vietā ? aizvietojam pret *) un jebkuru daudzumu ciparu vai latīņburtu, zīmi @, domēna daļu, kas līdzīga pirmai, punkts, domēnzonas daļu, kas parasti ir no 2 simboliem (lv,com,info, un kas zin vai drīz nebūs arī kāds .business)

     

    beigu() līdzīgi kā pirmajā () pieļauj vai nu rindas beigas (|$) vai jebkuru simbolu, kas nav " vai ' (tā pati href="|'[email protected]_"|'_), < (<a ...>[email protected]_<_/a>) un > visādam gadījumam

     

    ņemam regulāro izteiksmi, ejam uz http://venom.eclub.lv/VenRExp/ iekopējam augšējā inputā, iekš haystak ierakstam kaut kādu ([email protected]) [email protected] un skatāmies, kādi matči sanāk, ekperimentējam ;)

  9. str_replace @ pret _&_#64; vizuāli izskatās tāpat, bet vairums spambotu neķer

     

    visa padarīšana ir vienas lielākas padarīšanas daļa, bet svarīgākais izskatās apm. tā:

    $mail=$parts[2];//[email protected]
    $tmp='<a ';
    if ($opt['linkup']['nospam'])
    {
     $tmp.='onclick="return '.$opt['linkup']['nospam'].'(this)" ';
     $mail=str_replace('@','_&_#64;',$mail);
     $parts[2]=str_replace('.','.dot.',$parts[2]);
     $parts[2]=str_replace('@','.at.',$parts[2]);
    }
       if ($opt['linkup']['mlink']>1)
     $tmp.='class="email" ';	
    $tmp.='href="mailto:'.$parts[2].'">';
    if ($opt['linkup']['mlink']>2)
     $tmp.='<img alt="" src="'.$opt['linkup']['email'].'" />';
       return $tmp.$parts[1].$mail.'</a>'.$parts[3];

     

    $opt['linkup']['nospam'] nosaka de-protektēšanas javasvript f-jas nosaukumu, e.g. kā augstākminētās 'spam'

    $opt['linkup']['mlink'] - ja 2 (vai vairāk), tad tiek a elementam tiek pielikta CSS klase "email" (kurai var uzlikt before: {content:'links uz mailu'}), bet content nestrādā iekš tā IE (pagaidām vienīgais no CSS, kas man pietrūksts iekš IE)

    ja 3 vai vairāk, tad priekšā linka tekstam tiek pielikta ikoniņa ar aploksnīti vai ko tml. (otrā funkcija, kas linko URLus, tos vel sašķiro pa "uz attēlu, lokāls, nelokāls, šajā saitā")

  10. ... Nezinu, ko tie sarkanie -/+ linki dara, bet uz FF nestrādā ...

    fixed; samazina/palielina ievad/rezultālaukus

     

    ... tik zinu, ka ar ^ sākas un ar $ beidzas ...

    ne vienmēr; ^ nosaka rindas sākumu, $ - tās beigās, resp.ja gribi pārbaudīt, ka kaut kas sākas ar a un beidzas ar s, tad lietosi #^a(.*)s$#ms (# vietā parasti liek /, bet tad dāzreiz papildus jāescapē patternus)

     

    ... komentu uzlikt ...

    iraid

     

    ... headeri par vēlu sūtās ...

    should be fixed apm. 30 min pēc tam, kad nopostoju šeit linku (man pašam kūkijs bija ieglabājies, tāpēc nerādīja erroru)

     

    tomēr no jauna aizliedzu "e" modifikātoru

    pievienoju "skip", kas uz laiku aizmirst par $replacement, bet tomēt to saglabā, encoding mainīšanu (hint: tiem kam [:space:] neķēra atstarpes, lietot "u" modifikatoru)

  11. /me lieto

     $txt=preg_replace_callback
     (
      '#([^"\'><0-9a-z]|^)([0-9a-z][-_\.]?[0-9a-z]*@[0-9a-z]+[-.]?[0-9a-z]+\.[a-z]{2,})([^"\'><])#mi',
      'mcallback',
      $txt
     );

     

    kur iekš function mcallback() starp citu taisa

    $mail=str_replace('@','@',$mail);
    ... str_replace('.','.dot.',$mail);
    ... str_replace('@','.at.',$mail);

     

    resp. [email protected] pārveido par

    <a href="mailto:some.at.some.dot.some.dot.lv" onclick="return spam(this)">[email protected]</a>

     

    JavaScripts savukārt satur:

    function spam(element)
    {
    if (!element.href) return;
    addr=element.href;
    addr=addr.replace(new RegExp('\.at\.'),'@');
    addr=addr.replace(new RegExp('\.dot\.','g'),'.');
    mw=window.open(addr,'');
    element=null;
    return false;
    }

×
×
  • Create New...