Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tekstin etsiminen

nlampola [14.12.2003 10:02:28]

#

Kuinka etsiä (PHP:ssä) joku tekstinpätkä, ja sitten ottaa sen sisältö siitä niin kauan kunnes löytyy seuraava tietty tekstinpätkä (siis erilainen kuin ensimmäinen)?

trinit [14.12.2003 20:13:13]

#

Haetkohan kenties tällaista (testaamatonta koodia sitten!):

<?php
    $mjono = "Tässä hieman tekstiä tämän esimerkin pikaiseen testaukseen";
    $haku1 = "hieman";
    $haku2 = "pikaiseen";

    $haku1_pos = strpos($haku1, $mjono);
    $haku2_pos = strpos($haku2, $mjono);

    if ($haku1_pos === false) { exit("1. merkkijonoa ei löytynyt"); }
    if ($haku2_pos === false) { exit("2. merkkijonoa ei löytynyt"); }

    $sisalto = substr($mjono, $haku1_pos, $haku2_pos - $haku1_pos);

    echo "Sisältö: " . $sisalto;
?>

pistemies [15.12.2003 10:17:22]

#

Tuo tarttee varmaan vähän säätöjä. Tuollaisena tulostaa tuon 'eka-falsen'.

trinit [15.12.2003 17:19:32]

#

lainaus:

Tuo tarttee varmaan vähän säätöjä. Tuollaisena tulostaa tuon 'eka-falsen'.

Niinpä näyttääkin. strpos:lle oli mennyt parametrit väärin päin eli yo. koodi pitäisi olla tällainen:

<?php
    $mjono = "Tässä hieman tekstiä tämän esimerkin pikaiseen testaukseen";
    $haku1 = "hieman";
    $haku2 = "pikaiseen";

    $haku1_pos = strpos($mjono, $haku1);
    $haku2_pos = strpos($mjono, $haku2);

    if ($haku1_pos === false) { exit("1. merkkijonoa ei löytynyt"); }
    if ($haku2_pos === false) { exit("2. merkkijonoa ei löytynyt"); }

    $sisalto = substr($mjono, $haku1_pos + strlen($haku1), $haku2_pos - $haku1_pos - strlen($haku1));

    echo "Sisältö: " . $sisalto;
?>

Lisäksi muutin sitä sen verran, että $sisalto muuttujaan tulee ainoastaan se teksti mikä on sanojen "hieman" ja "pikaiseen" välissä, joten tulokseksi tulee "tekstiä tämän esimerkin"

Vastaus

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

Tietoa sivustosta