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ä?
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.
Regexpin saa olemaan välittämättä rivinvaihdoista m-modifierilla (m niinkuin multiline):
preg_match("/<p>(.*?)<\\/p>/m", $koodi, $teksti);
Aihe on jo aika vanha, joten et voi enää vastata siihen.