Autor Zpráva
http
Profil
Ahoj kluci,
napsal jsem v js tenhle výraz a potřeboval bych s ním pomoc v php, nějak mi to nefachá...

js z livepreview kde mi to funguje:
replace(/\&lt\;\:color\:([a-zA-Z0-9#]+)\&gt\;(.*?)\&lt\;\:color\&gt\;/g, '<span style="color:$1">$2</span>');	


php z db do stránky:
$text_page_texy = preg_match_all('<:color\:([a-zA-Z0-9#]+)>(.*?)<\:color>', '<span style="color:$1">$2</span>');


v databázi mám kod uložen takhle:
<:color:#ff7800>text<:color> nebo <:color:red>text<:color>
výstup asi tušíte:
<span style="color:#ff7800">text</span>

...ale ten php mi nějak nejede :(

Moderátor nightfish: regulární.
Moderátor DoubleThink: Taky regulérní. Přes míň častý výskyt v literatuře taky správně.
DoubleThink
Profil *
V PHP chybí delimiter okolo výrazu a možná ještě ungreedy přepínač. Kromě toho, ostré závorky by asi neměly být psány entitami, ale normálně (pokud jsou normálně i v řetezci).
http
Profil
já ti tak nějak vůbec nerozumím :)

mě to funguje takhle:
$text_page_texy = preg_replace('<:color:([a-zA-Z0-9#]+)>', 'span style="color:$1"', $text_page);
$text_page_texy = preg_replace('<:color>', '/span', $text_page_texy);


ale nemyslím si že by to bylo správně
http://www.klasici.cz/develop/karavaning/nase-auto

Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Majkl578
Profil
Myslím, že tohle je lepší než [#3].
var_dump(preg_replace('~\<\:color\:(#?[a-z0-9]+)\>(.*)\<\:color\>~iU', '<span style="color:$1">$2</span>', '<:color:#ff7800>text<:color> nebo <:color:red>text<:color>'));
http
Profil
Majkl578:
tohle funguje, i když tomu moc nerozumím, hlavně tomu '~' a '#?' a na konci 'iU', ale jede to jak má.
díky
Majkl578
Profil
[#5] http
~ je delimiter, označuje začátek a konec výrazu
#? otazník značí, že znak # může být použit, ale nemusí (je to jako #{0,1}
iU jsou modifikátory: i = case-insensitive, U = ungreedy

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: