Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: replace myös välistä...

Sivun loppuun

nixe [29.08.2004 09:48:47]

#

Eli pitäis saada muutettua seuraavanlainen lause sillai että myös heittomerkkien välissä oleva teksti huomioidaan.

Vaikka tämmönen "teksti" siis

niin että str_replace tms.. etsii heittomerkit ja värittää ne sekä tekstin niitten välistä.

Heikki [29.08.2004 10:08:27]

#

PHP:llä voi (muistaakseni) lainausmerkin tulostaa laittamalla sen eteen kenoviivan (\). Eli:

$jono=str_replace("\"teksti\"", "<font color=\"#FFFF11\">\"teksti\"</font>", $jono);

nixe [29.08.2004 10:23:30]

#

saan kyllä lainausmerkin mutta pitäis saada se lainausmerkkine välissä oleva teksti myös väritettyä. Ko teksti on tuntematon eli se voi olla mikä vain... Eli periaatteessahan homma voisi mennä vaikka niin että se välissä oleva teksti korvataan jollakin merkillä/merkeillä joita minä nyt en satu tietämään... Mutta jos se nyt ois vaikka tähti niin näin...

$jono=str_replace("\"*\"", "<font color=\"#FFFF11\">\"*\"</font>", $jono);

Eli jos joku sattus tietään mikä se merkki mahdollisesti on tai muun keinon nii kertokaas.

kenkku [29.08.2004 10:38:19]

#

makeuu kirjoitti:

$jono = str_replace("\"", "<font color=\"#FFFF11\">", $jono);
$jono = str_replace("\"", "</font>", $jono);

onnistuuko :O ?

No ei tietenkään :D
Ensimmäinen str_replace vaihtaa kaikki ":t <font color=\"#FFFF11\">:ksi :)
Regexpeillä voisi onnistua, joku muu kertokoon enemmän, minä en tiedä niistä paljoa.

Antti Laaksonen [29.08.2004 10:53:42]

#

Tässä on toimiva toteutus säännöllisellä lausekkeella:

$jono = ereg_replace("\"[^\"]*\"", "<font color=\"blue\">\\0</font>", $jono);

Ensimmäisenä oleva parametri tarkoittaa, että lainausmerkkien välissä voi olla muuttuva määrä kaikkia muita merkkejä (tai ei mitään). Toinen parametri lisää lainausmerkkikohtien ympärille värityksen - \0 on koko sääntöön sopiva tekstinpätkä.

nixe [29.08.2004 10:58:33]

#

tuollaisen koodin kekkasin jostain...

$jono = preg_replace("(\"(.*)\")", "<font color='#800080'>\"$1\"</font>",$jono);

muuten hyvä mutta värittää koko alueen, eli ottaa ensimmäisen ja viimeisen heittomerkin ja värittää kaikki niiden välistä. Ja pitäs saada niin että värittää vain "" välissä olevan alueen.

ajv [29.08.2004 11:45:31]

#

[snaps]
Tajusin hieman väärin ongelman.

Meitsi [29.08.2004 11:55:34]

#

Laitan tähän samaan thrediin oman kysymykseni:
Miten saa tekstistä "sensuroitua" sanan joka on monella eri kirjainkoolla. Tällä hetkellä käytän str_replacea.
esim:
poistaa: rumasana
ei poista : RuMaSaNa

EN viitsisi laittaa koko tekstiä pienille kirjaimille koska silloin se näyttää tyhmältä. Servulla ei ole php5 joten str_ireplace ei toimi.

tsuriga [29.08.2004 12:08:30]

#

http://cvs.php.net/co.php/pear/PHP_Compat/Compat/Function/str_ireplace.php?r=1.15

nixe [29.08.2004 12:09:54]

#

Antin koodi nimesi vain kaikki korvattavat samalle nimelle...
tuossakin näyttäisi pientä probleemaa olevan esim tälläinen ei toimi...

$jono = 'OpenToRead("handling.lst")';
echo preg_replace("/(\")(\w*?(\"))/", "<font color=\"#800080\">$1$2</font>", $jono);

ajv [29.08.2004 12:24:50]

#

Pitäisi toimiä vähän paremmin:

$jono = 'OpenToRead("handling.lst")';
echo preg_replace("/(\")(.*?)(\")/", "$1<font color=\"#800080\">$2</font>$3", $jono);

Tämä siis ei väritä lainausmertkkejä, vaan niiden välisen osan.

acorn [29.08.2004 12:41:33]

#

Ilman ylimääräisiä viritelmiä eli helpommin ymmärrettävällä tavalla:

<?php
function varita($text, $col)
{
    $teksti = "";
    $t = false;
    for($n = 0; $n < strlen($text); $n++)
    {
        if($text[$n] == '"')
        {
            if(!$t)
                $teksti .= "\"<font color=\"$col\">";
            else
                $teksti .= '</font>';
            $t = !$t;
        }
        else
            $teksti .= $text[$n];
    }

    return $teksti;
}

echo varita('Tämä on "testi".', "#ff0000");
?>

EDIT (jo toinen kerta): En ole syönyt tänään vielä mitään ja aivot toimivat hieman hitaasti. Oli jostakin tuntemattomasta syystä päässyt ylimääräisiä merkkejä koodiin. Oli ylimääräinen lainausmerkki ja aiemmin piste.

Meitsi [29.08.2004 12:49:22]

#

Crimson editor sulkee itsensä aina kun pastean tuon koodin.

EDIT: Vaikka olen includettanut tuon str-ireplace koodin niin silti valittaa: Fatal error: Call to undefined function: str_ireplace() in /home2/square35/public_html/guestbook.php on line 22

Tupla edit: Sain toimimaan. Kommentit peittivät osan koodista.

folio [29.08.2004 13:31:59]

#

nixe kirjoitti:

Eli pitäis saada muutettua seuraavanlainen lause sillai että myös heittomerkkien välissä oleva teksti huomioidaan.

$st = preg_replace("@\"(.*?)\"@s", "<font color='#800080'>\"\\1\"</font>", $st);

nixe [30.08.2004 09:38:01]

#

Nonii alkohan sieltä toimivaa systeemiä löytyyn...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta