FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Flitig postare
|
Skulle bli jätteglad för lite hjälp, jag är inte så haj på sånt här.
Följande plockar ut första meningen ur en textmassa. Hur gör jag för att ändra så att det blir två meningar istället? <?=isset($jDesc) ? str_replace(array("\"", "\n", "\r"), "", preg_replace(array("#^(.{0,200}?\.).*$#s", "#<[^>]*?>#s"), array("$1", ""), substr($jDesc, 0, 200))) : "" ?> Tusen tack om någon kan hjälpa mig... Jag chansade helt utan kunskap på att ändra $1 till $2 men så lätt var det tydligen inte.. |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
Det inom parantesen är den intressanta biten:
^(.{0,200}?\.).*$ På svenska betyder det nåt i stil med "Nåt som börjar med upp till 200 valfria tecken, och som avslutas med en punkt". Ska du ha två meningar borde det alltså bli "Nåt som börjar med upp till 200 valfria tecken, och som avslutas med en punkt, följt av upp till 200 valfria tecken som avslutas med en punkt" ^(.{0,200}?\..{0,200}?\.).*$ Fast denna är ju inte helt 100%-ig. För det första kan meningarna inte ha mer än 200 tecken, för det andra klipper den helt enkelt efter andra punkten, vilket inte nödvändigtvis måste vara precis där andra meningen slutar. Vill man exempelvis hindra att den klipper vid tre punkter (ellipsis) får man säga att det måste vara minst ett tecken som inte är punkt mellan de två meningarna, men då blir det ju mer komplicerat. Frågan är hur säkert det måste vara. |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Flitig postare
|
Jättetack!!
Jag ändrar till lite fler tecken också, precis som du påpekar. Tror att det räcker med med den "enkla" varianten, åtminstone tills vidare. |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
Splitta på punkt och ta med de två första bitarna som är längre än typ 3 tecken.
|
||
![]() |
![]() |
Svara |
|
|