Kom ihåg mig?
Home Menu

Menu


problem med validering

 
Ämnesverktyg Visningsalternativ
Oläst 2009-11-07, 21:58 #1
Firekicker Firekicker är inte uppkopplad
Medlem
 
Reg.datum: Mar 2003
Inlägg: 86
Firekicker Firekicker är inte uppkopplad
Medlem
 
Reg.datum: Mar 2003
Inlägg: 86
Standard 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 ?
Firekicker är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-07, 22:34 #2
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
Kod:
echo $text;
if(strlen($text) > 200) echo '</p>';
Så avslutas sista paragrafen alltid om det är över 200 tecken.
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-07, 22:50 #3
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
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.
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-08, 20:38 #4
Firekicker Firekicker är inte uppkopplad
Medlem
 
Reg.datum: Mar 2003
Inlägg: 86
Firekicker Firekicker är inte uppkopplad
Medlem
 
Reg.datum: Mar 2003
Inlägg: 86
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() =)
Firekicker är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-08, 22:57 #5
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
Citat:
Ursprungligen postat av Firekicker Visa inlägg
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.
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-09, 01:34 #6
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
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.
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-17, 16:46 #7
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
eller lägg till nytt fält i databasen med en kortare beskrivning av nyheten
allstars är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-17, 20:47 #8
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
Citat:
Ursprungligen postat av allstars Visa inlägg
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.
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:56.

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