Jump to content
php.lv forumi

Atrast tekstā noteiktus simbolus / frāzes un nevienāda skaita gadijumā


AndzX8-842

Recommended Posts

Atrast tekstā noteiktus simbolus / frāzes un nevienāda skaita gadijumā pievienot tekstam vēl pāris.

 

Tātad $teksts glabā kaut kādu informāciju. Un kā tas nereti gadās, piemēram, izmantojot <b></b> kādreiz piemirstas nobeidzošais tegs. Tālāk jau var novērot situāciju, kad visu aiz neaizvērtā tega atrodošos tekstu, saites...vienalga ko var vērot iebiezinātu ar <b>.

 

Loģiski domājot ienāca prātā, ka vienkārši ir jāsaskaita vai ir tekstā vienāds skaits <b> un </b> tegu un to pašu darīt ar pārējiem BBCode tegiem. Ja skaits ir nepāra, tad $tekstam galā jāpievieno vēl vienu </b> vai nu, kas tur prasās...</i>, </u>, utt. Līdz ar to sabojāts būtu tikai komentārs, paziņojums vai nu kur nu katrā gadjumā izmanto BBCode.

 

Tikai nezinu kā to izdarīt. Vai nu saite uz php manuāli vai kāds piemērs noderētu, paldies.

Link to comment
Share on other sites

Vienalga labi nesanāks: "<b><i></b>" pārveidosies uz "<b><i></b></i>". Vajag skatīties arī kurā vietā likt tos aizverošos. Nevis beigās likt, bet braukt cauri tekstam, likt stekā atverošos tegus, līdzko sastop aizverošo paskatās uz steka virsotni - ja sakrīt tegi, tad ir ok un izvelk no steka. Bet ja nesakrīt, tad ieliek no steka virsotnes tos aizverošos tegus tekstā, kamēr sastop atbilstošu aizverošo tam, kas ir tekstā atrasts. Un tad turpina.

Link to comment
Share on other sites

userim vispar nevajag atljaut ievadiit html tagus....

ja savaadaak nevar/negrib tad [tags] bet nekaadaa gadijuma <tags>

A kāpēc ne? Ja tas ir mazs wyiwyg editors.. tad tagi ir ļoti ok.. Reti kurš lietotājs saprot kā izskatīsies vai hvz vēl kas..

Protams krietni rūpīgāk ir jātaisa arī iepostotā teksta apstrāde..

 

 

Ja gribās html koda kaut kādu validēšanu kleanupu var izmantot tidy http://www.w3.org/People/Raggett/tidy/ .. http://lv.php.net/tidy bet tam būs jauzliek vai nu no PECL modulis vai arī var arī darbināt executabli

 

Personīgi lietoju:

tidy_parse_string($text);

tidy_clean_repair();

$text = tidy_get_output();

 

Un ļoti ok cleano/repairo no visām word u.c. ķeskām..

Link to comment
Share on other sites

Pēc standartiem varbūt arī nebūtu, bet skāde tomēr mazinās. Un jā, pavisam noteikti, klāt likt vajadzētu tikai aizverošo tegu. Man tagad nepieciešama tikai 4 tagu pārbaude...<i>,<b>,<u> un <blockquote>. Protams, ka BBCode tiek pielietots(,,,[blockquote]), visi pārējie html tegi tiek pārvērsti...nu vienkārši htmlspecialchars() izmantojot par ko nu katrs tur tiek mainīts.

 

Kaut kādas papildus pakas, tidy filtri, nē tas man nederēs...vajag neatkarīgi no servera, lai strādātu.

Edited by AndzX8-842
Link to comment
Share on other sites

$checker->check

 

Man kaut kā šis tieši nepatīk, tiem "->" atbalstu gadienā nedod PearDB? Man tādas izteiksmes php nestrādā ar "->."

 

Interesanti šķiet, ka nevar vienkārši saskaitīt, cik daudz ir viena un tā pati frāze iekš kāda $string. Tik daudz funkciju php, bet kaut ko tik vienkāršu nevar izdarīt.

 

Princips jau būtu vienkāršs, ja būtu ar ko saskaitīt tos <i>, <u>,...

 

$elementi_a

$elementi_b

 

$elementi_a / elementi_b = elementu_dalijums

ja ( $elementu_dalijums != 1 ) {

piemetam galaa tegu

}

 

<EDIT>

http://lv.php.net/manual/en/function.preg-replace.php

 

Ir iespējams saskaitīt, cik daudz frāžu tika aizvietotas ar citam...tas atrisinātu problēmu, ja vien, tā nebūtu PHP5.1.0 versija, kopš kuras tika ieviests COUNT. Man ir nedaudz vecāka, kurā tādas lietas vēl diemžēl nav.

</EDIT>

Edited by AndzX8-842
Link to comment
Share on other sites

$checker->check

 

Man kaut kā šis tieši nepatīk, tiem "->" atbalstu gadienā nedod PearDB? Man tādas izteiksmes php nestrādā ar "->."

Kas par muļķībām? Tā ir normāla OOP sintakse.

 

$elementi_a / elementi_b = elementu_dalijums

ja ( $elementu_dalijums != 1 ) {

piemetam galaa tegu

}

Ak dievs... Kāpēc ne, ja ($elementi_a != $elementi_b) { ... } ???

 

preg_match_all(..) ?

Edited by bubu
Link to comment
Share on other sites

Jā, ideja apmēram varētu būt tāda kā preg_match_all, bet kā to savienot ar preg_replace?

 

Nezinu...lūk, būtu kāds, kas no phpBB ir izmaherējis laukā kodu, kas atbild par BBCode, būtu vislabakais variants. Izdarītu to pats, ja saprastu, kas ir kas, kas nav tas un kas ir tas īstais "Kas," kuru vajag.

Link to comment
Share on other sites

×
×
  • Create New...