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

Kako izdvojiti string izmedju navodnika?

[es] :: PHP :: Kako izdvojiti string izmedju navodnika?

[ Pregleda: 3603 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gzox
Novi Sad

Član broj: 20999
Poruke: 43
213.137.127.*



Profil

icon Kako izdvojiti string izmedju navodnika?06.12.2004. u 09:30 - pre 235 meseci
Zelim da napravim niz od jednog stringa. String sadrzi skup reci i pojmova koji su razdvojeni uglavnom razmacima. Izdvajanje reci i smestanje u niz se lako radi kada se koristi split(). Na primer string je recenica:

Uredjaj marke "Red Star" ima podrsku za "quick pack" sistem.

Medjutim, problem je kod izdvajanja pojmova, zato sto se pojam sastoji od vise reci (npr. dve) koje stoje izmedju navodnika. Sto je najgore izmedju tih reci se pojavljuje razmak, koji onemogucuje upotrebu split() funkcije pomocu razmaka.

Da li postoji jednostavno i brzo resenje, ili bar neko elegantno, pomocu kojeg bi reci bile splitovane, a uz to da pojmovi koji su izmedju navodnika budu tretitrani kao jedna rec?

Odnosno, da li postoji elegantan nacin da se izdvoje reci koje su izmedju navodnika u ovom primeru koji sam naveo crvenim slovima?

Nadam se da sam bio jasan.

Unapred hvala.
 
Odgovor na temu

Not now, John!

Član broj: 231
Poruke: 1318
*.dialup.blic.net.



+4 Profil

icon Re: Kako izdvojiti string izmedju navodnika?06.12.2004. u 09:40 - pre 235 meseci
Pomoću funkcije preg_replace().
"I'd take the awe of understanding over the awe of ignorance any day."
- Douglas Adams
 
Odgovor na temu

gzox
Novi Sad

Član broj: 20999
Poruke: 43
213.137.127.*



Profil

icon Re: Kako izdvojiti string izmedju navodnika?06.12.2004. u 10:28 - pre 235 meseci
Da li je moguce pomocu te funkcije ovo uraditi u jednom koraku:

- Splitovati reci sa razmakom
- a pri tome reci izmedju navodnika uzimati kao jednu rec
- plus da splitovani pojmovi da ne sadrze karaktere navidnika?
 
Odgovor na temu

Zoran Rašković
Serbia

Član broj: 95
Poruke: 1360
*.verat.net.



+1 Profil

icon Re: Kako izdvojiti string izmedju navodnika?06.12.2004. u 10:47 - pre 235 meseci
Evo nešto na brzaka, mada ne koristi Regexp:

Code:

<?php

$string = 'Uredjaj marke "Red Star" ima podrsku za "quick pack" sistem.';

$final = split(" ", $string);

$novi = array();
$j = 0;
$temp = '';

for ($i=0; $i<count($final); $i++) {

    if (substr($final[$i], 0, 1) == '"') {
        $temp = $final[$i];
    }
    if (substr($final[$i], -1) == '"') {
        $novi[$j] = substr($temp, 1) . ' ' . substr($final[$i], 0, -1);
        $j++;
    }
    if (substr($final[$i], -1) != '"' AND substr($final[$i], 0, 1) != '"') {
        $novi[$j] = $final[$i];
        $j++;
    }
}

print_r($novi);

?>


Kontam da postoji kraće i lepše rešenje.
 
Odgovor na temu

gzox
Novi Sad

Član broj: 20999
Poruke: 43
213.137.127.*



Profil

icon Re: Kako izdvojiti string izmedju navodnika?06.12.2004. u 12:26 - pre 235 meseci
Hvala lepo! Volio bih da vidim ono krace resenje!
 
Odgovor na temu

marinz
Marinko Zec

Član broj: 41493
Poruke: 3
*.net.t-com.hr.



Profil

icon Re: Kako izdvojiti string izmedju navodnika?08.12.2004. u 17:41 - pre 235 meseci
sa regexp stringom

Code:
(?:["|'])([\s\w])+(?:["|'])


mores vaditi riječi unutar jednostrukih ili dvostrukih navodnika bez obzira na duzinu ili broj razmaka.

za ostalo pogledaj php funkciju 'preg_match_all'

a za testiranje mores koristiti odlicne programcice sa


Code:
h**p://ezshare.de/files-en/139367/pg_rb.zip.html


ako ih nema javi pa cu ih staviti :)
 
Odgovor na temu

gzox
Novi Sad

Član broj: 20999
Poruke: 43
213.137.127.*



Profil

icon Re: Kako izdvojiti string izmedju navodnika?10.12.2004. u 09:44 - pre 235 meseci
Hvala puno, ali kako da ubacim jos da mi se reci splituju i pomocu zareza?
 
Odgovor na temu

Calimero-dev
Bgd

Član broj: 42752
Poruke: 10
*.nat-pool.bgd.sbb.co.yu.

Sajt: localhost


Profil

icon Re: Kako izdvojiti string izmedju navodnika?22.12.2004. u 01:09 - pre 235 meseci
Evo kako bi ja to odradio :


Odredio sta prvo mora da se izvdvoji iz ovog stringa ( u ovom slucaju prvo moras iseci deo u navodnicima, pa tek onda preostale reci odvojene zarezima ).


Nulta akcija - izbroj broj reci u polju, objasnicu kasnije zasto ovo


Prvo bih pronasao prvo pojavljivanje znaka " - navodnika, onda prvo sledece ( nemoj poslednje jer mozda bude 20-ak navodnika izmedju, vec prvo sledece pojavljivanje ) - kreirao bih substring i kompletno izbacio isti iz stringa ( naravno i zapamtio ga sa strane, zajedno sa rednim brojem prve reci u navodnicima u odnosu na ceo string.


E sad bih razbio string na zareze i kreirao array, ali u FOR petlji, da bih sa rednim brojevima sad samostalnih reci i reci koje smo uzeli iz navodnika rekonstruisao niz sa istim redosledom reci ( indexnim brojevima ) kao i u originalnom stringu.


Dobices Array sa kojim mozes dalje da se igras


NAPOMENA: kod sigurno moze jednostavnije da se napise ( oko ovog rekonstruisanja originalnog redosleda, ali posto je sad 2.06 ujutru i ja vizuelisem kodove u glavi.... )


funkcije koje treba da koristis ( a naci ces referencu na php.net) su: substr(), prem_match(), explode(), for() .... zavisno koliko ces usloznjavati obradu stringa )


Ako je ovo pomoglo, bilo mi je drago.


Pozdrav.
E=m * V {i}
 
Odgovor na temu

svukas

Član broj: 42688
Poruke: 5
*.dial.b92.net.



Profil

icon Re: Kako izdvojiti string izmedju navodnika?22.12.2004. u 14:33 - pre 235 meseci
Citat:
gzox: Da li je moguce pomocu te funkcije ovo uraditi u jednom koraku:

- Splitovati reci sa razmakom
- a pri tome reci izmedju navodnika uzimati kao jednu rec
- plus da splitovani pojmovi da ne sadrze karaktere navidnika?


bez regularnih izraza mozes ovako:

1. splituj s navodnikom
2. neparne (ili parne ako je prvi znak bio navodnik) splitujes pomocu razmaka
3. spojis liste u odgovarajucem redosledu
 
Odgovor na temu

marinz
Marinko Zec

Član broj: 41493
Poruke: 3
*.net.t-com.hr.



Profil

icon Re: Kako izdvojiti string izmedju navodnika?26.12.2004. u 18:30 - pre 235 meseci
probaj iz regexp-a direktno pozivati funkciju i napraviti ono sto ti treba

Code:
...
//$patt hvata stringove sa navodnicima
//kada se izvrsi preg_replace i ako nesto uhvati onda zbog one oznake "e" na kraju
//ponudi php-u rezultate po redoslijedu postavljanja () zagrada.

//$1 je prvi navodnik (jedno ili dvostruki)
//$2 je cijeli tekst unutar navodnika
//$3 je zavrsni navodnik

//preg_replace umjesto da direktno zamjeni nesto u pronadjenom dijelu stringa
//izvrsi vrijednost variable $repla tj pozove funkciju. Funkcijom mozes sa 
//array_push recimo filati neki array sa onim unutar zagrade za kasniju obradu ili ako
// napravis 'return $nesto;' onda sa tim $nesto radis zamjenu u stringu $neki_string.

$patt="/(?:["|'])([\\s\\w])+(?:["|'])/e",

$repla="replfn('$2')";

$result=preg_replace($patt,$repla,$neki_string);

function replfn($in_text){
//split $in_text ili sta ti vec treba
...
}
 
Odgovor na temu

[es] :: PHP :: Kako izdvojiti string izmedju navodnika?

[ Pregleda: 3603 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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