Topic: replace paskutinius simbolius

Sveiki,

Turiu zodziu aibe (masyva):
$a = (vienas, du, trys, keturi, penki...);

Ir turiu string'a tarkim: keturi plius vienas yra ne keturi;

Man reikia gauti keturi plius vienas yra ne;

T.y jeigu zodzio galas baigiasi kazkuriuom zodziu is "zodziu aibes t.y masyvo" reikia pasalinti ji ir replacint'i i nieka.

Jeigu $a butu tik stringas tarkim siuo atveju : keturi

$info = preg_replace("'keturi$'",'', "keturi plius vienas yra ne keturi");

sitaip veikia, esme nesigauna paduoti gerai(tinkamai) masyvo i preg'a;

Re: replace paskutinius simbolius

O ne patogiau, butų:
1. Explodini per tarpą
2. Patikrini ar masyve yra paskutinis expodinto masyvo elementas
3. Jei taip - unsetini paskutinį elementą ir implodini su tarpu

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: replace paskutinius simbolius

Nebloga ideja!
Bet beda tame, kad: vienas,du...ir t.t ir veliau yra elementas is dvieju zodziu :/

Re: replace paskutinius simbolius

tai explodink per "yra ne" aisku jei jis nesikeicia ir nesikartoja.

Re: replace paskutinius simbolius

Zinoma jis dinamiskas :)

pasirasiau tokia funkcija, reikia tik pasitestuoti ar visada gerai veikia:

function erase_end($string, $array){

$visas_ilgis = strlen($string);
$string_end = substr($string, -10);

foreach($array as $v)
{
if(stristr($string_end, $v) == TRUE) {
$s_lenght = strlen($v);
}
}


$fixed_string = substr($string, 0, $visas_ilgis-$s_lenght);
$fixed_string = rtrim($fixed_string," ");

return $fixed_string;
}

var_dump(erase_end($stringas, $arr));

6 (edited by Ajaks 2013-01-21 17:01:49)

Re: replace paskutinius simbolius

Papasakok platesni vaizdeli, ka nori padaryti?

Is pirmo posto matosi, kad tarp zodziu yra tarpai, bet veliau tarpu nebelieka? Ar atsiranda dvigubi zodziai?

Jeigu taip, padaryk dvigubus zodzius laikinai viengubus (su kokiu nors bruksneliu), tol kol daromos operacijos. Poto bruksneli panaikink.

Re: replace paskutinius simbolius

Esme, kad gaunu string'a ir jis nevisada buna tvarkingas (taip jau useriai pildo informacija) pavyzdyje nesimato tas, bet esme ta, kad turiu aibe elementu, kurie gali buti nuo vieno zodzio iki dvieju ir reikia patikrinti kad gautame string'e nebutu gale tu elementu, esme kad gaunamas stringas gali buti ilgas, o man svarbus tik galas - 10 paskutiniu pozicijiu, tarp tu 10 paskutiniu poziciju neturi buti nei vienas elementas is "tos aibes"; tai su brukstenliais nemanau, kad cia kas gero iseis, arba netaip supratau

8 (edited by Ajaks 2013-01-22 10:19:12)

Re: replace paskutinius simbolius

Na gali tuomet varyti preg_replace per cikla su kiekvienu masyvo nariu ir tikrink ta pati stringa ir jeigu randa, istrini norima zodi ar zodziu jungini. Arba tikrink string'o dali.

foreach($uzdraustas_masyvas as $uzdraustas_zodis)
{
   preg_replace ($uzdraustas_zodis, '', $sexy_stringas);
}

Nors klausimas kaip tie useriai viska iveda, gal ivedimo formoje galima padaryti pakeitimus.


EDIT: pataisiau, turejo buti preg_replace.

Re: replace paskutinius simbolius

Tai tame ir esme, kad nelabai turiu teisiu prieiti prie tos formos :)

Meginau as toki varianta, kazkas negerai buvo - bet pameginsiu tuojaus, gal perkaitus galva buvo; (P.s) pas tave pavizdyje be "galo tikrinimo"

Dabar irgi pasirasiau paprasta toki: reg_replace("'(vienas|du|trys....")$'", '', $x); irgi nevisai gerai veikia nesuprantu del ko

Re: replace paskutinius simbolius

Daryk kaip rašė žygis, tai aiškiausias sprendimas pradžiai.

Gerai, kad ir preg_replace radai, su masyvu irgi galima kažką nuveikti, bet viskas yra šiek tiek sudėtingiau/painiau negu gali atrodyti iš pirmo žvilgsnio.

Re: replace paskutinius simbolius

explodinant pagal tarp'a prasideda bedos tuom, kad uzdrausti zodziai gali irgi buti dvieju zodziu junginys

Re: replace paskutinius simbolius

AsMike wrote:

Tai tame ir esme, kad nelabai turiu teisiu prieiti prie tos formos :)

Meginau as toki varianta, kazkas negerai buvo - bet pameginsiu tuojaus, gal perkaitus galva buvo; (P.s) pas tave pavizdyje be "galo tikrinimo"

Dabar irgi pasirasiau paprasta toki: reg_replace("'(vienas|du|trys....")$'", '', $x); irgi nevisai gerai veikia nesuprantu del ko

tai pasiziurek kaip veikia preg_replace syntakse. Gal reikia kazka escapinti. Beto pas tave ne tarpai o bruksniai kazkokie. Kodel.

Re: replace paskutinius simbolius

Nes ten surasyti visi negalimi zodziai, kaip supratau | sitas veikia, kaip OR;

Re: replace paskutinius simbolius

Kazka tu cia ne taip darai. Pradek nuo instrukciju skaitymo.

Nerasyk zodziu o paduok kintamaji is masyvo tiesiai i preg_replace.