Bryta text efter x antal meningar

PHP

2 svar · 337 visningar · startad av Cri11e

Medlem sedan aug. 200235 inlägg
Trådstart#1

Tjabba,

Låt säga att jag har en text som är 10 meningar men bara vill visa dom x första meningarna, hur göra? Har sökt men jag hittar bara hur man kortar av efter ett visst antal tecken.

Medlem sedan aug. 20002 975 inlägg
#2

Problemet är att avgöra vad som är en mening. Du skulle t.ex kunna säga att att punkt delar mening:

$meningar = explode(".", $text);
if (sizeof($meningar) > 1) {
  unset($meningar[sizeof($meningar)-1]);
}

Nu har du varje mening i ett array-element och kan skriva ut de 10 första.

Problemet är att du kan använda punkt till annat. Förkortningar, kommatecken eller liknande.
Då skulle du t.ex kunna bestämma att en mening bryts med punkt, sedan något skiljetecken typ mellanslag, för att följas av stor bokstav:

$meningar = preg_split("/\\.\\s+(?=[A-ZÅÄÖ]|$)/s", $text.' ', -1, PREG_SPLIT_NO_EMPTY);

Här får du ta en fundering om en mening kan börja på något annat än stor bokstav, och om det kan göra det, kan också då denna kombination uppstå inne i en mening.

Sedan när du skriver ut:

$max = 10;
if ($max > sizeof($meningar)) {
   $max = sizeof($meningar);
}

for ($i=0; $i<$max; $i++) {
   echo trim($meningar[$i]).'. ';
}

[EDIT]
Glömde tydligen bort förra gången att webforum stjäl backslash i regexpar :)
Har ändra nu

Medlem sedan aug. 200235 inlägg
#3

Tack så mycket!

272 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)