Autor Zpráva
http
Profil
mám kod:
<:color:red>bla bla bla<:color>

a potřeboval bych část převést na :

<span style="color:red">bla bla bla</span>

s tím že to co je mezi ": >", v mém případě "red", chci doplnit do: "color:red"

připravil jsem si javascript:
	var barva = new RegExp("(&lt;:color:)+[a-z]+(&gt;)");
	document.getElementById('livecontent').innerHTML = document.getElementById('livecontent').innerHTML.replace(barva, '<span style="color:red">\n');
	
	document.getElementById('livecontent').innerHTML = document.getElementById('livecontent').innerHTML.replace(/\&lt\;\:color\&gt\;/g, '</span>\n'); 
	


Je to pro livepreview psaného textu v CMS, tak proto jsou tam znaky psané entytama &lt; ap.

V podstatě bych potřebovat tu barvu vytáhnout jako proměnnou a doplnit ji do nahrazovaného textu, vše mi funguje, jen nevím jak z toho vytáhnout tu barvu, poradíte mi? A jako třešínku ba dortu, bylo by možné aby to umělo i barvu hexadecimálně: #ff7800; Ale to už je fakt jen fíčura. :)
Pavel
Joker
Profil
http:
Mno, v první řadě bych asi doporučil použít už hotový WYSIWYG editor (například TinyMCE nebo FCKEditor), ušetří to spoustu problémů.

K dotazu:
(&lt;:color:)+[#a-z0-9]+(&gt;)

Proč tam je to označené plus-ko? A proč je tam takové závorkování jaké je?

Já bych to udělal nějak takhle:
RV pro hledání <:color:([a-zA-Z0-9#]+)>(.*?)<:color>
nahrazení: <span style="color:$1">$2</span>

...funguje i pro hexadecimální barvičky. První závorkovaný podvýraz je název barvy, druhý podvýraz je obsah tagu.
Případně to ještě chce převést < a > na &lt; a &gt;
http
Profil
Joker:
například TinyMCE nebo FCKEditor
tak to jsem už dávno zavrhl, ale děkuji, mám jiné představy o editování textu, nicméně když se to nekomu líbí...

Ještě jedna otázka, funkce pro livipreview je zpracovávána u každého keyup, jak zabránit tomu aby to nevyhazovalo chyby, protože dokud barvu nedopíšu celou, tak js konzole vypisuje tohle:
Varování: Očekávána barva, ale nalezeno '#f'. Chyba při parsování hodnoty 'color'. Deklarace vynechána.


...poslal jsem ti to do mailu, díky
Pavel
Chamurappi
Profil
Reaguji na httpa:
tak js konzole vypisuje tohle
To není chyba, to je jen neškodné varování. Na tvém místě bych to neřešil.
Můžeš si samozřejmě napsat reguální výraz, který ověří, jestli barva odpovídá „/^#(?:[0-9A-F]{3}){1,2}$/i“, ale to bys pak měl vyjmenovat i všechna jména barev (jako „red“, „gold“, „salmon“ atd.).
http
Profil
Chamurappi:
...hlášení no, já jsem to špatně napsal :) nechám to tak.

Díky moc kluci
Pavel

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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