Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Preg match ja rivinvaihto

Pallo [29.05.2008 17:44:55]

#

Tarkoitus on hakea preg_match funkkarilla <p> ja </p> tagien
välinen sisältö. Itse koodi näyttää nyt tältä:

<?php

$koodi = "
<div>
   <p>
   tekstiä....
   </p>
</div>";

preg_match("/<p>(.*?)<\\/p>/", $koodi, $teksti);

echo $teksti[1];

?>

Koodi ei tuossa tilanteessa toimi, ja tiedän että ongelman syynä on se, että haettava sisältö on eririvillä kuin itse tagit.

Kuinka siis muuttaa tuota hakua niin, että tagit voivat olla vaikka kuinka monen rivinvaihdon päässä itse haettavasta sisällöstä?

ville-v [29.05.2008 17:53:12]

#

Eiköhän tuo . päde vain kirjainmerkkeihin.

Rivinvaihdotkin löytäisi [.\n\r\t]* tms. mutta tuohon taitaa olla jokin kehittyneempi tapa.

Edittiä vielä: Nuo kun naputtelee kaikki hakasulkujen väliin, niin eiköhän toimi: http://en.wikipedia.org/wiki/Regexp­#POSIX_character_classes paitsi että haluat varmaankin vielä poistaa kaikkien merkkien luettelosta merkkijonon </p> ettei vahingossa satu jotain ihmeellistä bugia.

Blaze [29.05.2008 18:35:47]

#

Regexpin saa olemaan välittämättä rivinvaihdoista m-modifierilla (m niinkuin multiline):

preg_match("/<p>(.*?)<\\/p>/m", $koodi, $teksti);

Vastaus

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

Tietoa sivustosta