| 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 |
#2 · Zasláno: 21. 12. 2009, 16:37:10
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 * |
#3 · Zasláno: 21. 12. 2009, 16:42:24
Ano tak, akorát že tam budou ještě uvozovky:
width="něco" -> width=<span style="color:green">"něco"</span>? |
||
| Joker Profil |
#4 · Zasláno: 21. 12. 2009, 16:56:07 · Upravil/a: Joker
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 * |
#5 · Zasláno: 21. 12. 2009, 17:10:11
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 |
#7 · Zasláno: 21. 12. 2009, 18:18:38
janek1:
Kdyžtak preg_replace. Funkce ereg* jsou zavržené a nedoporučuje se je používat. |
||
| janek1 Profil * |
#8 · Zasláno: 21. 12. 2009, 22:25:45
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 * |
#9 · Zasláno: 21. 12. 2009, 22:31:17
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 |
#10 · Zasláno: 21. 12. 2009, 22:48:57
|
||
| killme Profil |
#11 · Zasláno: 21. 12. 2009, 22:49:47
musíš ten regulák olomítkovat
$out = preg_replace('/width="([^"]*)"/', "width=<span style=\"color: green\">\"\\1\"</span>", $text); |
||
| mckay Profil |
#12 · Zasláno: 21. 12. 2009, 22:52:31
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 * |
#13 · Zasláno: 21. 12. 2009, 23:00:54
diky all
|
||
| mckay Profil |
#14 · Zasláno: 21. 12. 2009, 23:10:11
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. :-) |
||
|
Časová prodleva: 16 let
|
|||
0
).