webForumDet fria alternativet

Bryta text efter x antal meningar

PHPur PHP

2 svar · 330 visningar · startad av Cri11e

Medlem sedan aug. 200235 inlägg
Frågan#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!

132 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)