CruellaDeVille Skrevet 2. november 2007 Del Skrevet 2. november 2007 Jeg har en lang tekststreng (feks en artikkel), som jeg skal generere en ingress av. Ingress er pr def i dette tilfelle de fem første setningene. Hvordan kan jeg dele streng x ved forekomst av tegn punktum nummer 5? Jeg har klart det med å eksplodere strengen, men løsningen min er lite elegant og jeg har lyst å lage den bedre. Dette har jeg så langt. public function get_ingress(){ $this->content = strip_tags($this->content); $lines = explode('.', $this->content); for($i=0; $i<5; $i++){ $ingress .= $lines[$i]. ". "; } return $ingress; } Jeg forsøkte meg med preg_match_all, men den hentet bare ut alle punktumene, så det var ubrukelig. Jeg innbiller meg at regex er min venn i dette tilfelle, men kan ikke nok. Noen forslag for hvilken funksjon jeg kan titte på? eller forslag til hvordan gjøre min funksjon vakker? Lenke til kommentar
loathsome Skrevet 2. november 2007 Del Skrevet 2. november 2007 (endret) Du kan gjøre slik som du gjør, men før du legger setningen i $ingress sjekker du om den starter på en stor bokstav. Da vil ikke forkortelser (blabla dvs. ja) komme med. Noe mer nøyaktig måte kommer jeg dessverre ikke på akkurat nå. Endret 2. november 2007 av loathsome Lenke til kommentar
Peter Skrevet 2. november 2007 Del Skrevet 2. november 2007 Flere måter her: 1. explode på punktum array_slice for å hente 5 første fra arrayet implode for å sette sammen de fem første igjen 2. sett x til 0 loop n(5) ganger med strpos bruk x = strpos( . , x+1 ) NB! strpos kan returnere false, så du må passe på verdien til x (bruk tmp som du sjekker at ikke er false før du setter x til tmp) når loopen er ferdig vil du ha posisjonen til det n-te punktumet. Lenke til kommentar
loathsome Skrevet 2. november 2007 Del Skrevet 2. november 2007 Hva om en setning er slik da, Peter: "Dette er en setning, dvs. ikke en fugl"? Lenke til kommentar
Peter Skrevet 2. november 2007 Del Skrevet 2. november 2007 Hva om en setning er slik da, Peter: "Dette er en setning, dvs. ikke en fugl"? Jeg ser absolutt problemet, og innrømmer at jeg ikke tenkte på det da jeg forseslo de forrige algoritmene, men jeg svarte på spørsmålet hennes Uansett tror jeg ikke det er et stort problem om man får fire istedenfor fem linjer. Personlig pleier jeg å lage ingress basert på n antall linjeskift. (Gjerne ett dersom det er folk som skriver korrekt) Lenke til kommentar
CruellaDeVille Skrevet 2. november 2007 Forfatter Del Skrevet 2. november 2007 Tusen takk! Array_slice har jeg aldri sett/brukt før. Hvis artikkelen inneholder dvs. ikke en fugl så er det dumt. Semantikk kan jeg ikke avdekke ved hjelp av matematikk. Lenke til kommentar
Stian Jacobsen Skrevet 5. november 2007 Del Skrevet 5. november 2007 Det beste ville vell vært å ta X antall tegn +/- neste punktum Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå