Problemer med validering og behandling af post data
Hej,På min hjemmeside har jeg et forum. Der er nogle tekst-formatterings funktioner, så som at:
- :) bliver til en smiley (img-tag)
- links bliver klikbare
- tekst kan gøres fed, kursiv og understreget med henholdsvis [f], [k], [u].
- lange ord skal brydes op, så de ikke ødelægger designet (tables)
Jeg har dog nogle problemer:
- Når man skriver et meget langt link, skal dette IKKE brydes op, da det jo ødelægger linket. Det har givet det problem, at lange links ødelægger designet. er det muligt at man kan nøjes med bare at udskrive noget af linket, men selve referencen er stadig fuld?
Eks. www.dr.dk/index?action=d ... /index.htm (henviser til www.dr.dk/index?action=drama&link2=this&link3=/index.htm)
- Når man skriver ") bliver det opfattet som ;) (det er fordi " bliver konverteret til quot;
Hvis i har flere rettelser eller gode forslag er de meget velkomne!
På forhånd mange tak for hjælpen!
----func.php-----
<?php
include("tagster_lib.php");
/************************ Wordwrap der ikke ødelægger hyperlinks START ****************************************/
function nywordwrap($str, $max = 100, $break = ' ') {
// create array by deviding at each occurrence of "<a"
$arr = explode('<a', $str);
// break up long words in $arr[0] since
// it will never contain a hyberlink
$arr[0] = preg_replace('/([^\s]{'.$max.'})/i',"$1$break",$arr[0]);
// run loop to devide remaining elements
for($i = 1; $i < count($arr); $i++) {
// devide each element in $arr at each occurrence of "</a>"
$arr2 = explode('</a>', $arr[$i]);
// break up long words in $arr2 that does not
// contain hyberlinks
$arr2[1] = preg_replace('/([^\s]{'.$max.'})/i',"$1$break",$arr2[1]);
// rejoin $arr2 and assign as element in $arr
$arr[$i] = join('</a>', $arr2);
}
// rejoin $arr to string and return it
return join('<a', $arr);
}
/************************ Wordwrap der ikke ødelægger hyperlinks SLUT ****************************************/
/************************ Smiley START ****************************************/
$smiley_tag = array(
'@-)',
':||',
':-||',
'8-0',
'|-I',':-0',
':-p',
':p',
':P',
'8-)',
'8)',
':-D',
':D',
';)',
';-)',
':(',
':)',
':-)',
'[stjerne]',
'[skidt]',
'[godt]',
'[love]',
'[broken-love]'
);
$smiley_img = array(
'<img src="pic/smileys/rolleyes.gif">',
'<img src="pic/smileys/angry.gif">',
'<img src="pic/smileys/angry.gif">',
'<img src="pic/smileys/eek.gif">',
'<img src="pic/smileys/sleep.gif">',
'<img src="pic/smileys/terrefied.gif">',
'<img src="pic/smileys/tongue.gif">',
'<img src="pic/smileys/tongue.gif">',
'<img src="pic/smileys/tongue.gif">',
'<img src="pic/smileys/cool.gif">',
'<img src="pic/smileys/cool.gif">',
'<img src="pic/smileys/biggrin.gif">',
'<img src="pic/smileys/biggrin.gif">',
'<img src="pic/smileys/wink.gif">',
'<img src="pic/smileys/wink.gif">',
'<img src="pic/smileys/frown.gif">',
'<img src="pic/smileys/smiley.gif">',
'<img src="pic/smileys/smiley.gif">',
'<img src="pic/smileys/star.gif">',
'<img src="pic/smileys/thumbdown.gif">',
'<img src="pic/smileys/thumbup.gif">',
'<img src="pic/smileys/hjerte.gif">',
'<img src="pic/smileys/hjerte-itu.gif">'
);
/************************ Smiley slut ****************************************/
function skriv($Besked){
$Besked = htmlentities($Besked, ENT_QUOTES);
$Besked = str_replace("æ", "æ", $Besked);
$Besked = str_replace("ø", "ø", $Besked);
$Besked = str_replace("Ã¥", "å", $Besked);
$Besked = str_replace("Ø;", "Æ", $Besked);
$Besked = str_replace("Ø;", "Ø", $Besked);
$Besked = str_replace("Ø;", "Å", $Besked);
global $smiley_tag, $smiley_img;
$Besked = str_replace($smiley_tag,$smiley_img,$Besked);
//Source, fed, kursiv og understreget
$Besked = preg_replace("/\[code\](.*?)\[\/code\]/ims","<pre width=\"100%\" style=\"display: inline; font-family: Courier;\">\\1</pre>", $Besked);
$Besked = preg_replace( "/\[f\](.*?)\[\/f\]/ims", "<b>\\1</b>", $Besked);
$Besked = preg_replace( "/\[k\](.*?)\[\/k\]/ims", "<i>\\1</i>", $Besked);
$Besked = preg_replace( "/\[s\](.*?)\[\/s\]/ims", "<s>\\1</s>", $Besked);
$Besked = preg_replace( "/\[u\](.*?)\[\/u\]/ims", "<u>\\1</u>", $Besked);
$Besked = tagster_format($Besked);
//Linjeskift
//$Besked = str_replace("\t", " ", $Besked);
$Besked = str_replace("\r", "", $Besked);
$Besked = str_replace("\n", "<br> ", $Besked);
$Besked = nywordwrap($Besked);
RETURN $Besked;
}
?>
---- tagster_lib.php -----
<?php
function tagster_format($str, $target="_blank", $css_class="", $fixlongword = 0) {
$str = tagster_url($str, $target, $css_class);
$str = tagster_email($str, $css_class);
$str = tagster_fix_endchar($str);
return $str;
}
function tagster_url($str, $target, $css_class) {
$ins_str = "";
if ($css_class) $ins_str .= " class=\"".$css_class."\"";
if ($target) $ins_str .= " target=\"".$target."\"";
$str = tagster_expand($str);
$str = preg_replace ("/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "<a href=\"\\1://\\2\"".$ins_str.">\\1://\\2</a>", $str);
$str = preg_replace ("/(\s|tp\:|\(|\[|\>)(www\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"http://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
$str = preg_replace ("/(\s|tp\:|\(|\[|\>)(ftp\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"ftp://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
return tagster_reduce($str);
}
function tagster_email($str, $css_class="") {
$ins_class = "";
if ($css_class) $ins_class = " class=\"".$css_class."\"";
$str = tagster_expand($str);
$str = preg_replace ("/([\s\"])([\w\.\-_]+)@([\w\-_]+)\.([\w\.\-_]+)/i", "\\1<a href=\"mailto:\\2@\\3.\\4\"".$ins_class.">\\2@\\3.\\4</a>", $str);
return tagster_reduce($str);
}
function tagster_fix_endchar($str) {
$str = preg_replace ("/([\'\"\)\]\.\,\?\!]+)\">/i", "\">", $str);
$str = preg_replace ("/([\'\"\)\]\.\,\?\!]+)\" (target|class)=\"/i", "\" \\2=\"", $str);
$str = preg_replace ("/([\'\"\)\]\.\,\?\!]+)<\/a>/i", "</a>\\1", $str);
return $str;
}
function tagster_expand($str) {
return " ".$str." ";
}
function tagster_reduce($str) {
return substr($str, 1, -1);
}
?>
