Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Razdvajanje reci

[es] :: PHP :: Razdvajanje reci

[ Pregleda: 4670 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

davidovic
Davidovic Milos
\cacak

Član broj: 8018
Poruke: 22
194.247.200.*



Profil

icon Razdvajanje reci17.02.2003. u 13:51 - pre 257 meseci
Zanima me kako da raydvojim rec na slova. Na primer $rec = pomoc
e sad mi treba kod koji ce mi dati recimo $prvoslovo = p , $drugoslovo = o , $treceslovo = m , $cetvrtoslovo = o , $petoslovo = c . Molim vas ako znate ostavite mi kod Hvala vam puno ljudi !!!

[Ovu poruku je menjao zombie / DDG dana 17.02.2003. u 16:30 GMT]
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: Razdvalanje reci17.02.2003. u 14:09 - pre 257 meseci
Code:

$rec = 'pomoc';
$slova = preg_split('//', $rec, -1, PREG_SPLIT_NO_EMPTY);
print_r($slova);
 
Odgovor na temu

Zoran Rašković
Serbia

Član broj: 95
Poruke: 1360
*.beograd-3.tehnicom.net



+1 Profil

icon Re: Razdvalanje reci17.02.2003. u 14:19 - pre 257 meseci
Code:

<?

$rec="Pomoc";

$duzina=strlen($rec);

$k=array();

echo "Rec: <I><B>$rec</B></I><p>";

for ($i=0; $i<$duzina; $i++)
    {
        $slovo=substr($rec, $i, 1);

        $br=$i+1;

        echo "Slovo br. $br: <b>$slovo</b><p>";



    }


?>
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon Re: Razdvalanje reci17.02.2003. u 14:26 - pre 257 meseci
aman gojko, nece valjda regularne izraze za nesto tako prosto (vidi se da si perl-ovac :D)

string u php-u se ponasa kao array() kada ga ti koristish tako $rec[3] daje cetvrti karakter u stringu $rec. (pocinje od nule)

znaci

Code:

$rec="pomoc";
for ($i=0; $i<strlen($rec); $i++) {
  echo "$i: ".$rec[$i];
}



ps. mada je previlnija sintaxa za ovo $rec{3} (viticaste zagrade)..
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: Razdvajanje reci17.02.2003. u 14:49 - pre 256 meseci
Perl je zakon .. nego zašto je pravilnije koristiti te zagrade {} – ? Imaš li neki tekst na temu tih standarda i sintakse?
 
Odgovor na temu

Dragoslav Krunić

Član broj: 225
Poruke: 1083
*.rcub.bg.ac.yu



Profil

icon Re: Razdvajanje reci17.02.2003. u 15:27 - pre 256 meseci
Nego šta nego je zakon Što bi koristio for kad može sve u jednoj liniji da reši? Elegantno
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon Re: Razdvajanje reci17.02.2003. u 16:37 - pre 256 meseci
gojko: mislio sam u php-u. kada karakterima stringa pristupash preko indexa $s[3], onda je pravilnije koristiti sintaxu $s{3}. to je ispravnije, zato sto prva sugerise da je $s niz, sto nije tacno (mislim da php daje i warning ili bar notice ako koristish [])

nema neki text. ima u php manualu (pogledaj mozda strings operators)


ixqq: pod 1) moze u jednoj liniji i u php, ali nije preporucljivo koristiti regex za tako proste stvari, jer su znato sporiji od bilo kog drugog nacina procesiranja texta.

pod 2) nije sa regexima u jednoj liniji, a bez njih da mora poetlja. u php-u, mozes BEZ IJEDNE linije da pristupish karakterima stringa. (znaci bez preg_split() ili bilo cega drugog).

ona petlja je bila samo da se prodje kroz string, da bih ilustrovao sintaxu. (isto to bi morao da radish i posle preg_split() sa $slova nizom..)
 
Odgovor na temu

Dragoslav Krunić

Član broj: 225
Poruke: 1083
*.verat.net



Profil

icon Re: Razdvajanje reci17.02.2003. u 17:55 - pre 256 meseci
Eh, jebiga. Naviko sam sa regexpom. Ali, ono, što kriptičnije i u jednoj liniji
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.drenik.net



+3 Profil

icon Re: Razdvajanje reci17.02.2003. u 23:33 - pre 256 meseci
Postoji samo jedan mali problemcic, oba resenja koja ste naveli nisu multibyte safe (za prce sam dodao u opciju ali izgleda da bas ne radi kako treba)

$slova = preg_split('//u', $rec, -1, PREG_SPLIT_NO_EMPTY);

P.S
testirano sa stringom 'ajd da vidimo da li radi cirilica' (napisanim cirilicom u UTF8-ici) koji strlen, preg_split razdvajaju na 62 karaktera. Prilicno sam iznenadjen da preg_split nije ovo odradio kako treba iako mu je receno da string tretira kao UTF8.

Owl
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon Re: Razdvajanje reci18.02.2003. u 01:21 - pre 256 meseci
ne bi da se pravim vazan, ali pokazi mi definiciju gde pise da ne bi trebalo da odvaja po svakom bajtu (btw, kako radi isto u perlu?)

ja samo znam da kada ukljuucish /u modifier, da \w prepoznaje š,đ,ć,... slova kao "word" karaktere, a slicno, \W ih ne prepoznaje.

mozda bi mogao da probash nesto sa preg_match(), ili preg_match_all(), koristeci \w i/ili \W, umesto preg_split()


sa druge stran, mozda i jeste bug..

sa trece strane, imash mb_* funkcije u php-u, ukljucujuci i regex funkcije (mada posix, a ne pcre). mb_strlen() na utf8 cirilici radi super, a pretpostavljam i mb_split() i druge regex funkcije (nisam uspeo da probam, imam stariju verziju php bez ovih f-ja)
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: Razdvajanje reci18.02.2003. u 03:20 - pre 256 meseci
Zar nisu mb_* experimentalne funkcije?
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon Re: Razdvajanje reci18.02.2003. u 03:26 - pre 256 meseci
da, pa? ;)

rade dobro koliko ja znam. bar za utf-8.

josh zeza nesto oko drugih nacina kodiranja (japanski/kineski/tunguziski..), ali sa utf8 nema prob.


jedino mora malo da se pazi, i da se setuje nesto za regex funkcije (neka opcija za interno kodiranje - nisam najbolje razumeo), ali je valjda ok

 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.drenik.net



+3 Profil

icon Re: Razdvajanje reci18.02.2003. u 12:31 - pre 256 meseci
Citat:

ne bi da se pravim vazan, ali pokazi mi definiciju gde pise da ne bi trebalo da odvaja po svakom bajtu (btw, kako radi isto u perlu?)


Nigde ne pise ali reci mi da li neko radi $string[0] da bi izvukao prvo slovo ili prvi bajt (ako mislis na preg_split tako je vratio onaj regex koji sam napisao). Ako koristis \w i /u normalno da ce da radi kada je rec definisana kao niz karaktera (pardon bajtova) odvojenih sa space, \n, \r, \t.
I ovde kada bi uradio
Code:

for ($i=0; $i<strlen($rec); $i++) {
   echo $rec[$i];
}

pocetni string bi ti bio ispisan kako treba (problem je kada multibyte karakter razdvojis na dva dela izmedju kojih upises nesto drugo -- ili sta god -- ili...).
Kakva su ti iskustva sa mb* funkcijama (da li si radio neke sajtove koji su potpuno cirilicni)??
Owl
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon Re: Razdvajanje reci18.02.2003. u 14:44 - pre 256 meseci
cisto da budem jasan, "\w" NE znaci "word", vec "word character", tj, po defaultu, matchuje samo [a-zA-Z0-9_] karaktere. ovo u prevodu znaci da utf8 slova (cirilica, nasa slova u latinici) nece prepoznati kao "word" karaktere, vec kao delimitere reci, tj kao \W

e, kad se ukljuci /u modifier, onda sve radi ok sa utf karakterima. (osim preg_split())


iskustva sa mb_* nemam. samo sam se malo igrao, i citao. koliko ja znam, sa utf8 radi ok, josh nije stabilno sa japanskim i slicnim kodinzima.

problem nije kako rade, vec mala/nepotpuna dokumentacija o mb_* funkcijama. (bolje rade nego sto to pise u doc ;)

ti kad probash, napisi svoje iskustvo...
 
Odgovor na temu

[es] :: PHP :: Razdvajanje reci

[ Pregleda: 4670 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.