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

KORIŠTENJE substr funkcije za napredne. Problem!!!

[es] :: PHP :: KORIŠTENJE substr funkcije za napredne. Problem!!!

[ Pregleda: 2595 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mrax
Mladen Mrakovčić
Josipdol

Član broj: 26214
Poruke: 203
*.cmu.carnet.hr.



Profil

icon KORIŠTENJE substr funkcije za napredne. Problem!!!12.06.2006. u 22:12 - pre 217 meseci
Htio bih napraviti kod kojim ću napisanu rečenicu u textboxu razdjeliti na riječi.
Šaljem code koji razdvaja prvu i drugu riječ i ispisuje ih na zaslonu.
problem je što mi u WHILE petlja odradi samo 2 kruga umjestoda stane tek kada prnađe razmak " ".

U ovom slučaju pošaljem rečenicu : 12345 6789 ABCD / treću riječ sam stavio da nađe drugi razmak
na ekranu umjesto da ispiše:
12345

6789

dobijem ispis:
12

4

evo koda, gdje grešim?
<?php $niz=$_POST['niz'];/* IZVLAČI IZ TEXT BOKSA NIZ I PUNI $niz */
$x=1 ;
$none=" " ;
while (substr($niz,$x)==$none); /* POČETAK TRAŽENJA PRVE RIJEČI */
{
$x++ ;
}
$rijec1=substr($niz,0,$x) ; /* KRAJ TRAŽENJA PRVE RIJEČI */

$A=$x+1 ; /* ODREĐUJE DA SE DRUGA RJEČ TRAŽI OD PRVOG RAZMAKA*/
/* POČETAK TRAŽENJA DRUGE RJEČI */
while (substr($niz,$A)==$none); /* KADSA JE $A ==" " ONDA DRUGA RJEČ IDE OD $X+1 DO $A */
{
$A++ ;
}
$C=$x+1 ; /* DRUGA RJEC POČINJE OD RAZMAKA + 1 POLJE */
$D=$A-$C ; /* ODUZMI GDJE JE DRUGI RAZMAK OD POČETKA DRUGE RJEČI */
$rijec2= substr($niz,$C,$D) ; /* RJEC2 IDE OD POZICIJE $C A DULJINA JE $D */
echo ($rijec1) ;
?>
<p>
<?php
echo ($rijec2) ;
?>
Mrax.....
_________________________
 
Odgovor na temu

kelja

Član broj: 70429
Poruke: 1416
*.dialup.neobee.net.



+35 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!12.06.2006. u 22:58 - pre 217 meseci
A zasto bi komplikovao?Ovo je mnogo jednostavnije resenje:
Code:

$recenica="Mozda je ovo mnogo jednostavniji nacin?A mozda i nije!A ipak jeste.DA.";
$recenica=str_replace("?"," ",$recenica);
$recenica=str_replace("."," ",$recenica);
$recenica=str_replace("!"," ",$recenica);
$niz=explode(" ","$recenica");
foreach($niz as $element)
if($element<>"")
echo "$element<br>";

Dodao sam neke stvari...Prvi kod je dobro radio,ali sa jednom recenicom...Ovo bi trebalo da radi i sa vise;-)



[Ovu poruku je menjao kelja dana 13.06.2006. u 06:56 GMT+1]
 
Odgovor na temu

sojic
Dalibor Sojic
Makedonija

Član broj: 7051
Poruke: 796
62.162.217.*

Sajt: right-sock.net


+1 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!12.06.2006. u 23:01 - pre 217 meseci
Dali mora da koristis while petlu?

Ja bih to izveo sa split funkciju.

Nemam PHP pri ruci, ali to bi izgledalo ovako

Code:


$niz="asdf lkj werw dsfg";
$reci = split(" ", $niz);

foreach ($reci as $rec) {
   echo $rec;
}


nisam siguran za ovaj split dali ce da splituje prazan prostor ili treba split(" \ ", $niz).

routing protocols enable routers to route routed protocols!
 
Odgovor na temu

cartmanlee
cartmanlee
FLEX/PHP specijalist, Adobe UG Manager
Zagreb

Član broj: 50997
Poruke: 436
*.adsl.net.t-com.hr.

Sajt: www.zgflex.org


+1 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!13.06.2006. u 07:33 - pre 217 meseci
Da nadopunim primjer od @sojica:
Code:


$niz="asdf lkj werw dsfg.sdfsdfsdf!asdasda?";
$reci = split("[.?! ]", $niz);

foreach ($reci as $rec) {
   echo $rec;
}


Na ovaj način će se string lomiti kada naiđeš i na kraj rečenice. Jedino bi možda mogao nastati problem kada imaš .... ili ????. Nisam isprobao stvar, ali ako bude problem, možeš to napraviti kao:

Code:


$niz="asdf lkj werw dsfg.sdfsdfsdf!asdasda?";
$reci = split("[.?! ]", $niz);

foreach ($reci as $rec) {
   
   if (trim($rec) != "") echo $rec;
}


Na taj način ćeš izbaciti prazne stringove.

BTW, PHP manual mi je na desktopu, ali je rano jutro i ne da mi se isprobati primjer
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!13.06.2006. u 07:48 - pre 217 meseci
Code:

$recenica = 'akdsjfl....    sldf: sldkg, sgk! sagkfotiore;
dasf sda??? sd fsdag sg a';
$reci1 = split('[[:space:][:punct:]]+', $recenica);
echo '<pre>'.print_r($reci1, true).'</pre>';
/* ili */
$reci2 = preg_split('/[\s\p{P}]+/', $recenica);
echo '<pre>'.print_r($reci2, true).'</pre>';



[Ovu poruku je menjao Br@nkoR dana 13.06.2006. u 09:00 GMT+1]
Banned - Not available
 
Odgovor na temu

mrax
Mladen Mrakovčić
Josipdol

Član broj: 26214
Poruke: 203
*.cmu.carnet.hr.



Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!13.06.2006. u 11:57 - pre 217 meseci
Citat:
Br@nkoR
Code:

$recenica = 'akdsjfl....sldf: sldkg, sgk! sagkfotiore;
dasf sda??? sd fsdag sg a';
$reci1 = split('[[:space:][:punct:]]+', $recenica);
echo '<pre>'.print_r($reci1, true).'</pre>';
/* ili */
$reci2 = preg_split('/[\s\p{P}]+/', $recenica);
echo '<pre>'.print_r($reci2, true).'</pre>';



[Ovu poruku je menjao Br@nkoR dana 13.06.2006. u 09:00 GMT+1]

Cekaj, nije mi najasnija forma ovde.?
Ako nije problem možeš mi objasniti red po red što php radi u ovom slučaju. Moram kod uklopiti u malo veći pa moram znati namraviti modifikaciju.

Mrax.....
_________________________
 
Odgovor na temu

mrax
Mladen Mrakovčić
Josipdol

Član broj: 26214
Poruke: 203
*.cmu.carnet.hr.



Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!13.06.2006. u 12:08 - pre 217 meseci
Citat:
kelja: A zasto bi komplikovao?Ovo je mnogo jednostavnije resenje:
Code:

$recenica="Mozda je ovo mnogo jednostavniji nacin?A mozda i nije!A ipak jeste.DA.";
$recenica=str_replace("?"," ",$recenica);
$recenica=str_replace("."," ",$recenica);
$recenica=str_replace("!"," ",$recenica);
$niz=explode(" ","$recenica");
foreach($niz as $element)
if($element<>"")
echo "$element<br>";

Dodao sam neke stvari...Prvi kod je dobro radio,ali sa jednom recenicom...Ovo bi trebalo da radi i sa vise;-)



[Ovu poruku je menjao kelja dana 13.06.2006. u 06:56 GMT+1]

Ne mioram koristiti while petlju.
ali kako mi ovde php razdvoji reči i doda ih promjenjivima:

$rečenica="Mozda je ovo mnogo jednostavniji nacin?A mozda i nije!A ipak jeste.DA.";
$reč1="Možda"
$reč2="je"
$reč3="ovo"
$reč4="mnogo"
...........

Mrax.....
_________________________
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!13.06.2006. u 13:31 - pre 217 meseci
Citat:
mrax: Cekaj, nije mi najasnija forma ovde.?
Ako nije problem možeš mi objasniti red po red što php radi u ovom slučaju. Moram kod uklopiti u malo veći pa moram znati namraviti modifikaciju.

Dakle postavio sam dva načina upotrebom regularnih izraza, upotrebom POSIX i PCRE(Perl) sintakse. To su funkcije split i preg_split.
Obe rade isto, dakle ukoliko proslediš neki sting oni će razdvojiti(podeliti) string na mestima gde se nalaze praznine( ,\r,\n,\t) ili interpunkcijski znaci, pri tom na tom mestu može imati najmanje jedan od znakova, i pri tom je moguća kombinacija praznina i interpukcijskih znakova (npr. " .", ".", ".,.", "?? !" itd.). Za malo bolje objašnjenje najbolje je da pogledaš manual, gde imaš detaljnije objašnjenu upotrebu regularnih izraza.

Pri ovom kodu dobijaš dva niza $reci1 (upotrebom POSIX-a) i $reci2 (upotrebom PCRE-a).

Funkcije echo i print_r sam koristio samo da prikažem ta dva niza.

Promenljiva $recenica je test string, kojim sam testirao ove funkcije.

Ti možeš, ukoliko ti odgovaraju ove funkcije, da koristiš jednu od bilo koje.

Nadam se da je sada malo jasnije.
Banned - Not available
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!13.06.2006. u 13:55 - pre 217 meseci
Nešto sam zaboravio da postavim u funkciji preg_split, a to je konstanta PREG_SPLIT_NO_EMPTY kako se ne bi vratili prazni delovi.
Banned - Not available
 
Odgovor na temu

kelja

Član broj: 70429
Poruke: 1416
*.dialup.neobee.net.



+35 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!14.06.2006. u 00:25 - pre 217 meseci
Evo nesto sredjenijeg ispisa:(a i malo boljeg koda koji uzima u obzir razne korisnicke nestasluke,a sigurno sam nesto i zaboravio)
Code:

<html>
<head>
<title>REC PO REC</title>
</head>
<body>
<form action="reci.php" method="post">
<textarea rows=5 cols=20 wrap="off" name="recenice" value=""></textarea><br><br>
<input type="submit" value="Ispisi" name="Ispisi"></form>
<?php
if(isset($_POST['Ispisi'])){

$nezeljenikarakteri=array("?","!",".",",","\n","\r","\t",";","-","/","\\","<",">");
for($i=0;$i<count($nezeljenikarakteri);$i++)
{
$recenice=str_replace("$nezeljenikarakteri[$i]"," ",$recenice);
}
$rec=array();
$reci=explode(" ","$recenice");
foreach($reci as $element) {
if($element<>""&& $element<>" ")
array_push($rec,$element);
//echo "$element<br>";
}
while (list($index,$vrednost)=each($rec)) {

$broj=$index+1;
$varijabla="REC$broj";

echo "$varijabla=$vrednost<br>";
}
}
?>
</body>
</html>


U sustini,preporucujem ti Brankovo resenje-mnogo je krace i efikasnije...
P.S.Reci su razdvojene i elementi su niza $rec, a i ispis je uredniji.
P.S.2-PhP znalci,ne smejte se!!!;-)
 
Odgovor na temu

mrax
Mladen Mrakovčić
Josipdol

Član broj: 26214
Poruke: 203
*.cmu.carnet.hr.



Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!14.06.2006. u 02:36 - pre 217 meseci
Code:

<?php $niz=$_POST['niz'];/* IZVLAČI IZ TEXT BOKSA NIZ I PUNI $niz */
$reci = split("[.?!, ]", $niz);

foreach ($reci as $rec) {
   
   if (trim($rec) != "") echo $rec;
}
echo ($reci[0]);
?>
  

          <p>
<?php
echo ($reci[1]);
?>
</p>
          <p>
  <?php
echo ($reci[2]);
?>
  </p>
          <p>
  <?php
echo ($reci[3]);
?>

Ovo je primer od Sojica i kojeg je nadopunio cartmanlee .Dodao sam samo ","
Evo rezultata:
Pošaljem php-u rečenicu : Ovo je probni primjer!
dobijem sledeći rezultat.
____________________
OvojeprobniprimjerOvo - echo ($reci[0]);- ovde nastaje problem???Tu treba pisati "Ovo"

je - echo ($reci[1]);

probni - echo ($reci[2]);

primjer -echo ($reci[3]);
____________________

mislim da je rešenje blizu
BTW : Kako da u dreamweweru napišem [ ] "ctrl+alt+F mi otvara select file ekran
Mrax.....
_________________________
 
Odgovor na temu

cartmanlee
cartmanlee
FLEX/PHP specijalist, Adobe UG Manager
Zagreb

Član broj: 50997
Poruke: 436
*.adsl.net.t-com.hr.

Sajt: www.zgflex.org


+1 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!14.06.2006. u 06:52 - pre 217 meseci
AltGr+f ?
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!14.06.2006. u 07:31 - pre 217 meseci
Citat:
mrax
OvojeprobniprimjerOvo - echo ($reci[0]);- ovde nastaje problem???Tu treba pisati "Ovo"

Pa i piše, za echo $rec[0] štampa se "Ovo". Proveri ponovo.
Banned - Not available
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!14.06.2006. u 08:50 - pre 217 meseci
Citat:
kelja: Evo nesto sredjenijeg ispisa:(a i malo boljeg koda koji uzima u obzir razne korisnicke nestasluke,a sigurno sam nesto i zaboravio)

Možda je u tom slučaju, bolje proći kroz string i izvući samo reči , odnosno samo delove koji sadrže slova, da ne bi brinuli koje će korisnik znakova/simbole uneti. Nešto npr:
Code:

preg_match_all('/\w+/s', $recenica, $reci);

Banned - Not available
 
Odgovor na temu

mrax
Mladen Mrakovčić
Josipdol

Član broj: 26214
Poruke: 203
*.cmu.carnet.hr.



Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!14.06.2006. u 10:26 - pre 217 meseci
Citat:
Br@nkoR: Pa i piše, za echo $rec[0] štampa se "Ovo". Proveri ponovo.

ma nisam razdvoio prva dva echo
mislim da ce sada biti dobro.
Mrax.....
_________________________
 
Odgovor na temu

mrax
Mladen Mrakovčić
Josipdol

Član broj: 26214
Poruke: 203
*.cmu.carnet.hr.



Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!14.06.2006. u 11:33 - pre 217 meseci
Sad je u redu, samo sada trebam na kraju rečenice utvrditi jeli rečenica upitna, usklična izjavna ili slično?
Dali moram koristiti substr funkciju i while ili i za ovo postoji elegantnije rešenje?
Code:

$n=1;
while (Substr($niz,0,$n)=="?");
{
$n++ ;
echo ('rečenica je upitna');
}


ovo je najprostiji primjer. treba mi puno složenije rješenje.
Preciznije, kod mi mora rečenicu gramatički obraditi.
Stoga moram imati izvučene u $rec[ ] sve delove rečenice.
(I točke i zareze i Upitnike )
U dosadašnjem kodu mi ih samo isključi.
Mrax.....
_________________________
 
Odgovor na temu

kelja

Član broj: 70429
Poruke: 1416
*.dialup.neobee.net.



+35 Profil

icon Re: KORIŠTENJE substr funkcije za napredne. Problem!!!14.06.2006. u 14:38 - pre 217 meseci
Citat:
Br@nkoR: Možda je u tom slučaju, bolje proći kroz string i izvući samo reči , odnosno samo delove koji sadrže slova, da ne bi brinuli koje će korisnik znakova/simbole uneti. Nešto npr:
Code:

preg_match_all('/\w+/s', $recenica, $reci);

Pa naravno,ali ja bas i nisam vest u koriscenju regularnih izraza(sto se i vidi;-)...Hvala,Branko.
Citat:
mrax: Sad je u redu, samo sada trebam na kraju rečenice utvrditi jeli rečenica upitna, usklična izjavna ili slično?

Preciznije, kod mi mora rečenicu gramatički obraditi.
Stoga moram imati izvučene u $rec[ ] sve delove rečenice.
(I točke i zareze i Upitnike )
U dosadašnjem kodu mi ih samo isključi.

Sad si me zainteresovao...kakva tebi aplikacija zapravo treba?Sta podrazumevas pod'gramatickom obradom'recenice?Utvrdjivanje komunikativne funkcije recenica tesko se moze uraditi na osnovu interpunkcijskog znaka na kraju.Recimo,uzvicnik moze da se nalazi i na kraju uzvicne recenice,a i na kraju zeljne,ili pak zapovedne...E da,koliko recenica treba da bude obradjeno?Znaci,koliko recenica se unosi u text box???
 
Odgovor na temu

[es] :: PHP :: KORIŠTENJE substr funkcije za napredne. Problem!!!

[ Pregleda: 2595 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

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