Autor Zpráva
janek1
Profil *
ahoj,
prosím vás jak mám pomocí regulárních výrazů přeměnit např.

width="color: red;"


na tento kód

width=<span style="color: green">"color: red;"</span>


text který se má přeměnit mám v proměnné $text

Googlim všude a nemůžu to najít.

Dík!

Moderátor Joker: Regulérně se tomu říká regulární výrazy
Joker
Profil
janek1:
Tohle konkrétní nahrazení jde udělat prostě nahrazením řetězců.
Jak má vypadat vzorec nebo algoritmus, podle kterého chcete nahrazovat?
Něco jako: width=něco -> width=<span style="color:green">něco</span>?
janek1
Profil *
Ano tak, akorát že tam budou ještě uvozovky:
width="něco" -> width=<span style="color:green">"něco"</span>?
Joker
Profil
V tom případě by primitivní způsob byl nějak takhle:
Nahradit co: width=(".*?")
Nahradit čím: width=<span style="color:green">\\1</span>

...případně by šlo použít tvrzení o předcházejícím:
Nahradit co: (?<=width)(".*?")
Nahradit čím: <span style="color:green">\\1</span>
(teď si nejsem jistý, jestli místo \\1 nemá být \\2)

edit: dvě zpětná lomítka u subvýrazů, ne jedno
janek1
Profil *
A jak by to mělo vypadat ve scriptu ?

$text = ereg_replace('??', '??', $text);

nevím co tam dosadit.. zkoušel jsem
width=(".*?") 

i
(?<=width)(".*?") 


ale nefunguje ani jedno... píše erory

jak to prosím patří?
killme
Profil *
asi nějak takhle

<?php
$text = 'width="color: red;" width="color: green;" width="color: blue;" ';
$out = ereg_replace('width="([^"]*)"', "width=<span style=\"color: green\">\"\\1\"</span>", $text);
echo $text."\n\n".$out;
?>


určitě do jde napsat i lépe..

mělo by ti to vypsat tohle:

width="color: red;" width="color: green;" width="color: blue;"

width=<span style="color: green">"color: red;"</span> width=<span style="color: green">"color: green;"</span> width=<span style="color: green">"color: blue;"</span>


Moderátor Joker: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Joker
Profil
janek1:
Kdyžtak preg_replace. Funkce ereg* jsou zavržené a nedoporučuje se je používat.
janek1
Profil *
díky moc!! to jsem přesně potřeboval =)

Znáte nějaké stránky, které by jste mě doporučili k naučení regulérních výrazů ? (kde je konečně pochopím)
Díky
janek1
Profil *
Aha tak to pořád nefunguje.... změnil jsem to na preg a ukazuje to chybu

Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in .....

Co je zase špatně?
Davex
Profil
[#8]
 Pavel Satrapa: Regulární výrazy
 Články o regulárních výrazech
killme
Profil
musíš ten regulák olomítkovat

$out = preg_replace('/width="([^"]*)"/', "width=<span style=\"color: green\">\"\\1\"</span>", $text);
mckay
Profil
janek1:
Delimetr (to co je na začátku a konci regulárního výrazu) nesmí být čislo/písmeno, nebo zpětné lomítko. To znamená, že tam budeš mít něco style "/regularni_vyraz/" a bude ti to fungovat. ;)
janek1
Profil *
diky all
mckay
Profil
janek1,
diky all

Možná že jsem až moc velký šťoura, ale bod jedna:
1. Pište česky nebo slovensky. Nutné anglické citace pokud možno překládejte. :-)

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: