Autor Zpráva
Johnik
Profil
Dobrý den,
mám problém s regulárními výrazy. Tento kód funguje, ale já nevím jak udělat, aby když je před tím nějaký můj tag (treba <script>), tak aby nefugoval a neobravil nic. Zkoušel jsem všechno možné, ale nedokážu víc, než když je tag přesne před textem.

//rozdeleni stringu do pole
foreach($array as $neco){
	$jine_array["/".$neco."(?![,y])/"]="<span class=\"as2_\">".$neco."</span>";
}
//barveni
$text = preg_replace(array_keys($jine_array), array_values($jine_array), $text);


Děkuji za každou odpověď

Opravdu nikdo neví?
Johnik
Profil
Tak já se zeptám jinak.
Jak zjistím jestli se text nachází mezi dvěma tágy?

$text = "assafsf <script>asdasff</script>"
$text = preg_replace("/<skript>([^<]+)<\/skript>/", "<skript>$1</skript>", $text);
//vrátí: assafsf <script>asdasff</script>


Ale toto nefunguje. Potřebuji z toho získat pouze <script>asdasff</script> nebo asdasff.

Prosím pomoc!
tiso
Profil
Johnik tak nepoužívaj preg_replace() ale preg_match(), prípadne preg_match_all()
Johnik
Profil
Už to mám, dík moc za radu.
Johnik
Profil
Jak prosím upravit toto:

preg_replace("/(\'|\")([^\'\"]+)(\'|\")/", ...


aby fungovalo i pri prazdnych uvozovkach?
tiso
Profil
Johnik - miesto + tam daj *
Johnik
Profil
Funguje, děkuji.
Johnik
Profil
Ještě se zeptám jak na poznámky. Když mám v kódu // a všechno za tím je jako poznámka, tak aby se mi v tom nebarvilo.

str_replace("//", "<poznamka>"
preg_replace("/<poznamka>([^<]+)(?=<)/", ...


Musím nějak upravit reguláry pro barvení nebo stačí upravit tento, třeba mazat " a vyhrazená slova pro barvení?
Johnik
Profil
Nevěděl by někdo jak napsat regulární výraz aby mi z výsledku

preg_replace("/<poznamka>([^<]+)(?=<)/", ...


odstranil všechny <span class='jakákoliv'> a </span>?

Děkuji za odpověď

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: