WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   problem med validering (https://www.wn.se/forum/showthread.php?t=1038981)

Firekicker 2009-11-07 21:58

problem med validering
 
Jag har upptäckt ett problem med validering(xhtml 1.0 transitional). Jag har ett nyhets script på första sidan som kortar av nyheter vars tecken är fler än 200.

Se: http://gsk.jbn.nu/home/index.php?startnytt

Nyheten visar endast 200 tecken sedan skrivs ... ut och en läs mer länk.

Nyheterna skrivs i ett adminsystem (cms - egen byggt) där jag använder fckeditor (wysywig editor) för att att skriva/uppdatera sidor och nyheter. Editorn skriver min text som html och skriver i bakgrunden <p>min text</p>

men problemet kommer när min text är längre än 200 tecken då bryts min text rätt av och det betyder att koden bakom också bryts av - så koden kan börja med <p> men det blir inget slut p och då blir validering fel för startsidan för det saknas ju en p sluttagg..

har någon något bra förslag på lösning av detta ?

KarlRoos 2009-11-07 22:34

Kod:

echo $text;
if(strlen($text) > 200) echo '</p>';

Så avslutas sista paragrafen alltid om det är över 200 tecken.

BjörnJ 2009-11-07 22:50

I värsta fall kan den ju klippa efter < men före >.

Säkrast att köra strip_tags() innan texten klipps ner till 200 tecken och lägga dit egna taggar före och efter. Eller att klippa efter ca 200 tecken, men bara klippa före ett whitespace, och lägga till </p> sist vid behov.

Firekicker 2009-11-08 20:38

If sats fungerar okej. tänkte inte så långt, det finns ju redan en if sats som lägger till ... om antal tecken är över 200. lade bara till ...</p> istället =) men ja visst Björn jag förstår vad du menar. Tack för era svar. Jag skall kolla upp strip_tags() =)

KarlRoos 2009-11-08 22:57

Citat:

Ursprungligen postat av Firekicker (Inlägg 20330255)
If sats fungerar okej. tänkte inte så långt, det finns ju redan en if sats som lägger till ... om antal tecken är över 200. lade bara till ...</p> istället =) men ja visst Björn jag förstår vad du menar. Tack för era svar. Jag skall kolla upp strip_tags() =)

Om du använder strip_tags() och tar bort HTML taggarna så finns det ju ingen poäng från början med att använda CKEditor.

Det enklaste är nog att i så fall använda en vanlig textruta och bara lägga på nl2br() på texten när du skriver ut den.

BjörnJ 2009-11-09 01:34

Man kan även råka ut för att det är andra taggar som inte stängs, om texten t.ex. kan innehålla fetstil.

Finns det någon funktion i PHP för att stänga öppna taggar i sträng? Jag letade lite snabbt, men hittade inte.

Jag tror att det bästa om man inte vill köra strip_tags() skulle vara att göra ungefär så här:
1) Klipp texten före ett whitespace efter ca 200 tecken. Om strängen kan innehålla taggar som innehåller whitespace får man tänka om lite och göra något mer avancerat som inte klipper i taggar.
2) Kör typ $string=close_tags($string) (först måste man dock hitta eller skriva en sådan funktion).
3) Om man vill ha med ... så får man stoppa in det i strängen några tecken från slutet (före det </p> som ska finnas där nu), eller använda regexp för att ersätta '</p>$' med '...</p>' (vilket skulle få samma effekt). Man kan även göra det lite enklare och lägga till ... innan man kör close_tags() istället, om det är ok att ... blir t.ex. fetstil eller del av en länk om det är så att </b> eller </a> hade blivit bortklippt.

allstars 2009-11-17 16:46

eller lägg till nytt fält i databasen med en kortare beskrivning av nyheten

BjörnJ 2009-11-17 20:47

Citat:

Ursprungligen postat av allstars (Inlägg 20331760)
eller lägg till nytt fält i databasen med en kortare beskrivning av nyheten

Man har dock fortfarande problemet att man antingen måste köra strip_tags() eller se till att man inte klipper av mitt i några taggar eller lämnar några taggar öppna. I varianten med ett nytt fält i DB räcker det dock att göra det en gång när man lägger in det i DB, och inte varje gång man läser från DB.


Alla tider är GMT +2. Klockan är nu 18:08.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson