Autor Zpráva
kokino
Profil *
mam problém nějak mi nejde dát dokupy jeden reg. vyraz - jaksi ještě moc vtom nejsem zaběhnutý :D

text..

<i>test</i>
1. 2ks banánů
2. 10ks pomerančů
<i>test2</i>
1. 80ks test
2. 10ks testss

zatím mám todle - nevypíše mi to ty očslované položky 1. 2. 3. pouze text v <i>

$test = preg_match_all("/\<i\>(.*)\<\/i\>(\s\d\. *(.*))*/",$text,$matched);
Jan Tvrdík
Profil
kokino
co to má dělat respektive co je cílem toho regexpu?
kokino
Profil *
vytáhnout ten text to rozdílných porměnných


$ = test


a pak ty řádky celébez toho očíslování

$ = 2ks banánů
$ = 10ks pomerančů
kokino
Profil *
sorry za překlepy
BlueRain
Profil
kokino
chyby ti tam modifikator na \n. Nahraď za preg_match_all(@\<i\>(.*)\<\/i\>@i). Nezkoušeno.
kokino
Profil *
BlueRain
nejde
K
Profil *
este jednou napis jaky ma byt vystup toho preg_matche. Presne tak jak to ocekavas.
kokino
Profil *
$ = test
$ = 2ks banánů
$ = 10ks pomerančů
$ = test2
$ = 80ks test
$ = 100ks testss


chci pracovat pouze stím textem pak a podtím <i> jak je to očíslování 1. 2. to jsou čísla řádků ty tam nechci
Jan Tvrdík
Profil
kokino
trochu mi na tom výpisu co uvádíš vadí, že je to blbost, takže se blbě domýšlí, co jsi tím chtěl říct
K
Profil *
to chapu ale jak ma vypadat to pole?
$pole[] = "test";
$pole[] = "2ks bananu"
...
...
?
kokino
Profil *
..ted to mám takhle
"/\<i\>(.*)\<\/i\>\s+(\d\. *(.*))*/"



mám todle ale vypíše mito pouze

text z <i></i>
a první řádek 1.

ale 2. (tento text mito nevycucne)
kokino
Profil *
$pole[] = "test";
$pole[] = "test2";

$pole[] = "2ks bananu"
$pole[] = "80ks test"

10ks...
100ks..
Jan Tvrdík
Profil
kokino
nepotřebuješ spíš něco jako
$pole["test"] = array("2ks bananu","10ks pomerančů");
$pole["test2"] = array("80ks test","10ks testss");
K
Profil *
kokino
preg_match_all("/<i>([^<\/i>]+)<\/i>|[^\.]+\.(.*)/i",$text,$pole);
print_r($pole);


co ti vypise ten print_r?
kokino
Profil *
K
uplné blbosti mito veme do polí i to co nechci z toho stringu co pouštím do pregmatch

vše krom textu v <i> mam v jedné array

Jan Tvrdík
ee
asi takhle nějak
$pole[0] = array("test","test2");
$pole[1] = array("2ks bananu","80ks test");
$pole[2] = array("10ks pomerančů","100ks testss");
BlueRain
Profil
kokino
A co třeba to nejdřív rozdělit na

<i>test2</i>
1. 80ks test
2. 10ks testss

a

<i>test2</i>
1. 80ks test
2. 10ks testss

a potom to upravit?
kokino
Profil *
BlueRain
ono jich je více těch odstavců

jako zkusím to no uvidím kam dojdu .. ale i tak stále jsem u toho

že todle
"/\<i\>(.*)\<\/i\>\s+(\d\. *(.*))*/"

mi udělá to co chci krom tohodle

$pole[2] = array("10ks pomerančů","100ks testss"); todle má bejt 2. (text)
BlueRain
Profil
kokino
Pokud je tam toho hodně tak to krájej explodem
kokino
Profil *
tak hodně to zase né .. více jak 7 odstavců nikdy nebude po několika řádcích nechápu že nejde udělat todle

"/\<i\>(.*)\<\/i\>(\s+(\d\. *(.*)))+/"

že pouze \s+(\d\. *(.*)) tomu řádku dám že se může opakovat
kokino
Profil *
vyřešeno nadvakrát :-P
/\<i\>(.*)\<\/i\>/

/\<\/i\>(\s\d\. *(.*))(\s\d\. *(.*))*/
kokino
Profil *
ani moc né jelikož když přidám řádek

3. tak m některé zaniknou ale já nejsme s jist že tam vždy budou jen 1. 2. :-/
Jan Tvrdík
Profil
kokino
Tohle by mělo fungovat:
preg_match_all("/<i>(.*)<\/i>/",$text,$matched);
$pole[] = $matched[1];
preg_match_all("/([0-9]+\. .+\s*)+/",$text,$matched);
foreach($matched[0] as $x) $pole[] = explode("\n",$x);

print_r($pole);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: