pomoc s regulárnymi výrazmi

Programovacie jazyky, rady, poradňa...
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

pomoc s regulárnymi výrazmi

Príspevok od používateľa geoge046 »

Cafte,
ako znie pls zapis pre regularny vyraz ktory vybere z retazca iba text medzi * a *?
Dakujem 8)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Skús niečo takéto:

Kód: Vybrať všetko

if (preg_match("/\*([^*]*)\*/", "aaaaa*bbb*cccc", $m) != 0) {
	echo $m[1];
}
(ak je tých *...* v reťazci viac, tak sa to bude musieť upraviť)
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

teraz som rozmyslal, ze jednoduchsie by to bolo urobit cez preg_replace a tych * a * tam moze byt viacej. Priklad ak to moze vyzerat: "TEXTTEXTTEXT*obrazok.gif*TEXT*obrazok.gif*TEXTTEXT"

A ono by to malo vyhladat kazdu cast textu kde je nieco ako *text.gif* a z toho potom vybrat iba to medzi * a *, a to cele (aj s hviezdickami)prepisat niecim takymto: <img src="(tu bude ten text zpomedzi hviezdiciek)">

PS: ten text medzi hviezdickami musi byt vzdy (neakytext).gif a bez ziadnej medzeri ;)

Dakujem
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Kód: Vybrať všetko

echo preg_replace("/\*([^*]*)\*/", "<img src=\"$1\">", "aaa*obr1.gif*ccc*obr2.jpg*eee*obr3.png*ggg");
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

A dalo by sa ze by to zobralo len v tom pripade ak medzi hviezdickami neni medzera a je to vo formate nasledujucom: *(nejakytext).gif*
to (nejakytext) bude akykolvek text ;)

Diks
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Kód: Vybrať všetko

echo preg_replace("/\*([^\s*]*\.gif)\*/", "<img src=\"$1\">", "aaa* obr1.gif*ccc*obr2.jpg*eee*obr3.gif*ggg*obr4.gif *");
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

a este by som sa chcel opytat ze ako by znel preg_match zapis ktory vyberie z celej premennej iba text medzi <!-- tlacenie start --> a <!-- tlacenie end -->

Dakujem :)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ak to tam môže byť iba raz, tak vyskúšaj toto:

Kód: Vybrať všetko

<?php
function find_txt($text)
{
        $count = preg_match("/<!-- tlacenie start -->(.*)<!-- tlacenie end -->/U", $text, $matches);
        return $count == 1 ? $matches[1] : "";
}
        echo find_txt("<!-- tlacenie start --> aaa <!-- tlacenie end --> bbb <!-- tlacenie start --> ccc <!-- tlacenie end -->");
        echo "<br><br>";
?>
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

no hentak to funguje ale v mojom pripade to nefunguje. Som zistil ze nechce to vybrat z premennej vtedy, ked ta premenna obsahuje nieco taketo:

Kód: Vybrať všetko

$text = "aa<!-- tlacenie start -->aa
sadfsdfsd
fd<!-- tlacenie end -->aa";
Teda nefunguje to vtedy ked je tam dalsi riadok. :(
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Uprav tam tento riadok:

Kód: Vybrať všetko

$count = preg_match("/<!-- tlacenie start -->(.*)<!-- tlacenie end -->/Us", $text, $matches);
(zmenil som tam /U na /Us)
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

A ked mam premennu kde ma byt len www adresa a ja chcem zistit ci je korektna alebo nie. Tak ako bude zniet preg_match zapis? diks
Napísať odpoveď