Kako pronaci odredjenu frazu unutar stringa

E raja,

imam jedno pitanje, ne mogu nikako da odgonetnem. Imam sad poveci text iz kojeg trebam izvuci odredjenu rijec koliko se puta ponavlja u datom stringu, do sada imam ovo
$broji = array_count_values(str_word_count($string,1));
echo $broji[‘rijec’];
ovaj funkcija mi nalazi koliko se puta “rijec” spominje u $string. Sad je fazon sto mi treba
npr neka fraza koja sadrzava vise rijeci npr kad pozovem ovu liniju koda:
echo $broji[‘neka rijec’];
ne dobijem nista

Malo mi je sumnjiva ta tvoja metoda za brojanje riječi.

Ako želiš brojati koliko se puta neki string pojavljuje unutar nekog drugog stringa, koristi naredbu substr_count.

PHP: substr_count - Manual

[quote=“dev_masta”]Malo mi je sumnjiva ta tvoja metoda za brojanje riječi.

Ako želiš brojati koliko se puta neki string pojavljuje unutar nekog drugog stringa, koristi naredbu substr_count.

PHP: substr_count - Manual

E ovo sam i trazio,
hvala ti najljepsa - samo jos jedno ako mozes da mi pomognes, trebam da nadjem fazon da vidim koliko je koja rijec ili fraza cesto koristena u textu.
Npr $text = “Ovo je lijep i suncan dan. Dan u kome ovo je pocelo”;
ovdje je npr rijec “ovo” i “dan” - 2 puta spomenuto. takodje i “je”.

i ti zelis dobiti sve te riječi koje se ponavljaju više od 1 puta?

Da, i onda da ih strpam u neki array ili bilo sta samo da ih nekako dobijem :slight_smile:

Jedan glupi način ali radi sve preko array.

[php]
$string = ‘Ovo je lijep i suncan dan. Dan u kome ovo je pocelo’;
$find = array(‘ovo’, ‘dan’, ‘je’, ‘lijep’);
$returned = array();

foreach($find as $word)
{
$split = preg_split(’/’.$word.’/i’, $string);
if(count($split) - 1 > 1) $returned[] = $word;
}

echo ‘

’,print_r($returned, true),’
’;
[/php]

[quote=“System32”][php]

if(count($split) - 1 > 1) $returned[] = $word;

[/php][/quote]

:slight_smile: ako vec ides tako, ne treba ti ovaj -1

[php]

if(count($split)  > 2) $returned[] = $word;

[/php]

[quote=“System32”][php]

if(count($split) - 1 > 1) $returned[] = $word;

[/php][/quote]

ako vec ide tako… onda stavi

[php]
if(count($split) > 2) $returned[] = $word;
[/php]

:slight_smile:

[quote=“webdeveloping031”]ako vec ide tako… onda stavi

[php]
if(count($split) > 2) $returned[] = $word;
[/php]

:)[/quote]Dodje ti na isto

pa dodje da, ali nema potrebe za oduzimanjem

nema ni potrebe za dodavanjem jednog više

LOL :roflmao:

to sto si ti napisao je

x-1>1

sto kad ‘rijesis’ je

x>2

dodavanje bi bilo da pise

x>1+1

a, to slazes se nema smisla

[quote=“System32”][php]
$string = ‘Ovo je lijep i suncan dan. Dan u kome ovo je pocelo’;
$find = array(‘ovo’, ‘dan’, ‘je’, ‘lijep’);
$returned = array();

foreach($find as $word)
{
$split = preg_split(’/’.$word.’/i’, $string);
if(count($split) - 1 > 1) $returned[] = $word;
}

echo ‘

’,print_r($returned, true),’
’;
[/php][/quote]

Trebao mislim napraviti escape za regex, jer neće raditi ako upucaš riječ “itd.”. Isto tako regex traži pattern pa bi mogao sutradan mogao biti isti kao i dan. Trebao bi modificirati regex.
No mislim da bi bilo najbolje umjesto preg_split koristiti ovu gore methodu string count a ostalo ostaviti sve isto.

ovo radi perfektno,

zahvaljujem :slight_smile:

[quote=“gorrc”]Trebao mislim napraviti escape za regex, jer neće raditi ako upucaš riječ “itd.”. Isto tako regex traži pattern pa bi mogao sutradan mogao biti isti kao i dan. Trebao bi modificirati regex.
No mislim da bi bilo najbolje umjesto preg_split koristiti ovu gore methodu string count a ostalo ostaviti sve isto.[/quote]
Ne kuzim sto si htio reći s ovim “itd.”. Jel oćeš reći da moram nekako ‘uklonit’ ili ‘izostavit’ interpunkcijske znakove ili nešto treće?
Sutradan = dan - Istina, napravio sam tako jer smatram da autor želi tako, ako ne želi samo neka kaže i popravi se lako!

[quote=“System32”]Ne kuzim sto si htio reći s ovim “itd.”. Jel oćeš reći da moram nekako ‘uklonit’ ili ‘izostavit’ interpunkcijske znakove ili nešto treće?
Sutradan = dan - Istina, napravio sam tako jer smatram da autor želi tako, ako ne želi samo neka kaže i popravi se lako![/quote]

“.” je rezerviran znak u regex. Ima ih dosta. Možda ima neka metoda koji stripa regex znakove.
No neki primjeri koji još ti nebi radili “post-script”, “$10”

aha to. Mislim da je onda najbolje koristit explode()

Ma samo zamjenti string count sa regex mislim da bi bilo ok.

Nije isto.
Možda je zanemariva razlika, ali sigurno da nije isto.

Pošto je navedeni if unutar foreach petlje, to znači da imaš jednu računsku operaciju više, i to za svaku riječ.
Pa ako je tekst stvarno masivan (kako se negdje, čini mi se, spominje) onda bi to i moglo utjecati na performanse.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja