Jump to content
php.lv forumi

code highlighting


Gacha

Recommended Posts

Kaut kad nesen izveidoju šitādu klasi priekš BBcode, bet man ir viena problēma - php koda highlightings uz mozillas ir dīvains, pirms katras rindas ir <br /> un vēl pamaniju tādu gļuku, ka highlig.. strādā un dažreiz nestrādā, no 20 refreshiem kādos 8 teksts ir bez tā!

 

Un vēl gribu, lai kāds norāda uz manām OOP kļūdām un ja var tad arī paskaidro, kapēc tā!

 

 

Kods iekš php.paste.lv

Link to comment
Share on other sites

Vai ir normāli preg_replace funkcijā par starting un ending delimiter ņemt divus dažādus simbolus un pie tam vēl iekavas! ( un ) ???

Konstruktorā netiek inicializēti visi klases mainīgie ($data), nav labais stils.

Vai .+? nav ekvivalents ar .* ?

Un ko tavs bbcode darīs, ja sastaps šādu konstrukciju: [ b ] [ i ] [ / b ] [ / i ] (bez atstarpēm protams). Iznāks nevalīdz html kods.

Un kāda jēga to $opt pārveidot par masīvu $mas, lai meklētu tajā ar in_arary? Nebija vienkāršāk ar strpos meklēt stringā?

Un lai drusktu advancētāko pataisītu to kaudzi ar if ( in_array(...)) $this->... varēja izveidot masīvu ar saistībām no opcijas un saucamās procedūras nosaukuma. Un tad tikai taisīt ciklu pa masīva elementiem un salīdzināt, ja atslēga ir opcijās, tad izsaukt to funkciju. Sanāktu smukāk, manuprāt ;)

Link to comment
Share on other sites

Es zinaju, ka tu atradisi tik daudz kļūdu :) un tas ir labi!

Vai ir normāli preg_replace funkcijā par starting un ending delimiter ņemt divus dažādus simbolus un pie tam vēl iekavas! ( un ) ???
Šito es nesapratu :( Jo diemžēlno regexiem gandrīz neko nesaprotu, jo samērāmaz tos izmantoju!
Konstruktorā netiek inicializēti visi klases mainīgie ($data), nav labais stils.
Zinu, ka tā nav pareizi, bet man data sākumā nav nepieciešams. Es no sākuma padodu opcijas un tad katru tekxtu atsevishkji.
Un kāda jēga to $opt pārveidot par masīvu $mas, lai meklētu tajā ar in_arary? Nebija vienkāršāk ar strpos meklēt stringā?
Kad domāju, kā vispār šito štelli darbināt biju ļoti aizrāvies ar masīviem, ka par strpos aizmirsu, bet iespejams, ka parveidošu.
Un lai drusktu advancētāko pataisītu to kaudzi ar if ( in_array(...)) $this->... varēja izveidot masīvu ar saistībām no opcijas un saucamās procedūras nosaukuma. Un tad tikai taisīt ciklu pa masīva elementiem un salīdzināt, ja atslēga ir opcijās, tad izsaukt to funkciju. Sanāktu smukāk, manuprāt
Šis izklausās baigi labi, bet īsti nesaprotu ko ar to domāji, jo šis ir vienīgais ko esmu ar OOP veidojis, ja vari tad paskaidro
Link to comment
Share on other sites

par to regulaaro ekspresiju. nu peec idejas saakumaaa vajag ielikt regexp adalitaajus, bet tas kaa kuraa vietaa, vispaar reti vajag atklaati sakot.

 

parasti liek # simbolus saakumaa un beigaas. preg_match('#te kods#', 'strings kuraa eklee').

 

pasties http://lv.php.net/manual/en/function.preg-match.php tur pilns ar piemeeriem.

 

i burts aiz pedeejaa simbola noziimee case nejuutiigs.

 

tas simbolus veelams neizmantot regexp speciaalos charus kaa tev tur (){}[]?.+-*$^ utt

Link to comment
Share on other sites

Ar pirmo bija domāts: šī vietā - preg_replace("(\[b\](.+?)\[\/b])is" ... likt "/\[b\](.+?)\[\/b]/is" vai "~\[b\](.+?)\[\/b]~is" vai "#\[b\](.+?)\[\/b]#is" bet nevis ( )

 

Tas pēdējais nav nekas saistīts ar OOP. Tur biju domājis tā ka: sataisa masīvu ar filtriem un to funkcijām:

static $mas = array ( 'url' => 'bb_url', 'color' => 'bb_color', ... ); un tad kad vajag izsaukt atbilstošā filtra fju, tad darās šādi:

  if (array_key_exists($mas, $filter))
  {
      $data = call_user_func(array('bbcode', $mas[$filter]), $data);
  }

vai vispār pārbaudīt vai var izsaukt filtru un tad izsaukt to:

  if (is_callable(array('bbcode', 'bb_'.$filter)))
  {
      $data = call_user_func(array('bbcode', 'bb_'.$filter, $data);
  }

Link to comment
Share on other sites

Preg_match es parasti izmantoju '/bla/i' Cik sapratu no jums, tad / vietā var likt jebkuru simbolu un ieteicams neizmantot nevienu no tiem specialajiem. Shitos pregus pats nesmu rakstijis, tos kaut kad baigi sen panjemu no viena bbcode parauga, tapec ar nezinu, kas tur un kaa. Gribetos iemacities to regex, bet vel nesmu atradis nevienu manuali, kursh butu pietiekami labs un viegli saprotams. Vienkarshi tai sintakse nevaru iebraukt. Atceros, ka viena veca posta venoms vienu baigi garo regex rindu lasija ka teikumu :)

 

Tas bubu par to masivu ir laba ideja, tas vienkarshotu kodu, betvel tik bik japiedoma, ko darit, ja vienam "style-tags" atbilst vairakas f-cijas, tad sha vaita sanaks rinjkjot pa masiviem, bet isaak sanaaks.

 

Bet, kas iisti ir ar to PHP-highlightingu? Kapec tas man tad ir, tad nav un aiz katras rindas ir <br /> ???

Link to comment
Share on other sites

×
×
  • Create New...