Zdravim.
Chtel bych v textovym retezci zvyraznit urcite slovo, ale fce StrReplace rozlisuje mala a velka pismena. Jak mam udelat aby to fungovalo kdyz dam slovo auto tak aby se premenilo i <B>Auto</B> nebo <B>AUTO</B>, <B>aUTo</B>...
Dik za rady
nejak me ta fce nefaka, asi tam mam neco spatne, pomohl by me s tim nekdo?
eregi_replace(regulérní výraz, náhrada, řetězec);
Regulérní výraz tě učit nebudu, náhrada je ta věc, za kterou chceš ten text nahradit a řetězec je proměná, kde máš uloženej ten text
Snad takhle:
$vzkaz = 'auto je na ho...';
eregi_replace('auto', '<b>auto</b>', $vzkaz);
Super, jde to...
ale jeste jednu vec - jak mam udelat, aby:
auto zamenil za <B>auto</B>
Auto zamenil za <B>Auto</B>
AUTO zamenil za <B>AUTO</B>
ted se vsechny typy slov AUTO zameni za <b>auto</b>
takhle:
$vzkaz = 'auto je na ho...';
eregi_replace("(auto)", "<b>//1</b>", $vzkaz);
Díky Mastře, aspoň se nemusim snažit prohledávat mý zdrojáky :-)))
neni zac :)
ale spletl jsem si lomitka takze to je takhle:
$vzkaz = 'auto je na ho...';
eregi_replace("(auto)", "<b>\\1</b>", $vzkaz);
panove me to teda nefaka...
<?
$zdroj = "bla bla MUJTEXT bla bla mujtext bla bla Mujtext";
$najdi = "mujtext";
$vysledek = eregi_replace("(".$najdi.")", "\\1", $zdroj);
?>
ZDROJ: <? echo $zdroj; ?><BR>
NAJIT SLOVO: <? echo $najit; ?><BR>
VYSLEDEK: <? echo $vysledek; ?>
uz fakt nevim co stim...
eregi_replace("(".$najdi.")", "\\1", $zdroj);
Zkus taky nahradit " za '
eregi_replace("('.$najdi.')", "\\1", $zdroj);
a stejně je to blbost, já typuju takhle:
eregi_replace("[[:<:]]mujtext[[:>:]]", "\\1", $zdroj);
toto [[:<:]] řekne, že to má být začátek slova a to druhý [[:>:]] konec
eregi_replace("[[:<:]]mujtext[[:>:]]", "\\1", $zdroj);
a kde je v tomhle prikazu zapsano aby z toho mujtext udelal <B>mujtext</B>
To proste nechapu...
Tak sory, já se pořádně nepodíval, tos tam špatně napsal ty
Zkus to takhkle:
eregi_replace("[[:<:]]mujtext[[:>:]]", "<b>\\1</b>", $zdroj);
Jo jinak se někde podívej po regulérních výrazech, třeba v knížce o PHP od Koska
Kdyby Ti to fakt furt nešlo, tak mi napiš e-mail
<?
$veta = "blabla MUJTEXT mujtext blabla Mujtext";
$opr = eregi_replace("[[:<:]]mujtext[[:>:]]", "<b>\\1</b>", $veta);
?>
VETA:
<?
echo $veta;
?><BR>
OPRAVENO:
<?
echo $opr;
?>
Vyhodi to tohle:
VETA:
blabla MUJTEXT mujtext blabla Mujtext<BR>
SLOVO:
mujtext<BR>
OPRAVENO:
blabla <b>\1</b> <b>\1</b> blabla <b>\1</b>
<?
$veta = "blabla MUJTEXT mujtext blabla Mujtext";
$opr = eregi_replace("[[:<:]]mujtext[[:>:]]", "<b>\\1</b>", $veta);
?>
VETA:
<?
echo $veta;
?><BR>
OPRAVENO:
<?
echo $opr;
?>
Vyhodi to tohle:
VETA:
blabla MUJTEXT mujtext blabla Mujtext<BR>
SLOVO:
mujtext<BR>
OPRAVENO:
blabla <b>\1</b> <b>\1</b> blabla <b>\1</b>
kdyz uz tak
eregi_replace("([[:<:]]mujtext[[:>:]])", "<b>\\1</b>", $veta);
nebo
eregi_replace("[[:<:]]mujtext[[:>:]]", "<b>\\0</b>", $veta);
Předtim jsem to nezkoušel. Teď jsem si spustil apache a zjistil jsem, že tam chyběj jen závorky
<?
$veta = "blabla MUJTEXT mujtext blabla Mujtext";
$opr = eregi_replace("(mujtext)", "<b>\\1</b>", $veta);
?>
VETA:
<?
echo $veta;
?><BR>
OPRAVENO:
<?
echo $opr;
?>
to chybely mas pravdu, s tema [[:<:]] [[:>:]] by ti to zvyraznilo jen samostatny slova a ne ty co se vyskytujou v jinym slove .. to uz zalezi na tobe
$opr = eregi_replace("(".$slovo.")", "<b>\\1</b>", $veta);
$opr2 = eregi_replace("[[:<:]]mujtext[[:>:]]", "<b>\\0</b>", $veta);
$opr3 = eregi_replace("([[:<:]]mujtext[[:>:]])", "<b>\\1</b>", $veta);
tyhlety uz fakaji ok.
Vysvetlil by mi nekdo jakej je rozdil v zapisu 2 a 3?
fungujou oba stejne a nemuzu v nich najit rozdil...
\0 znamena 'cely string, ktery vyhovuje', kdezto \1 'prvni cast' - ale protoze je tu jenom jedna cast, tak mezi tim neni rozdil
a 'cast' neboli podvyraz vytvoris pomoci tech kulatych zavorek :-) koukni na http://www.regexp.cz/ tam je to jednoduse a srozumitelne