Omskrive funktion fra javascript til php (skal udskrive links i kommentarer)
Godaften eksperter,Jeg er ikke helt sikker på hvordan jeg skal forklare problemet, men jeg prøver så godt jeg kan.
I mit kommentarsystem har jeg fået implementeret et javascript, hvor man har mulighed for at se et preview af sine kommentarer inden man poster. Her er der gjort således at html-tags ikke udskrives (ligesom når man bruger nl2br(htmlspecialchars(xx)))
I stedet sker der det at hvis der bliver skrevet [ b ]fed[ /b ], [ i ]skrå[ /i ], [ u ]understreget[ /u ], så bliver disse tags omskrevet så man i sit preview ser fed, skrå og understreget tekst. Kan se at det er præcis det samme som der også bliver brugt er på eksperten. Det samme sker hvis man bruger [ url ][ /url ] tag - her bliver der nemlig udskrevet et link! Dette fungerer helt som det skal.
Der er dog ikke mellemrum i klammerne! Det er for at det ikke skal se helt skidt ud her på eksperten, som min første tråd desværre kom til at gøre :(
Problemet:
Problemet opstår når kommentaren er blevet gemt i databasen og udskrives.
Jeg har fået gjort sådan at [ b ], [ i ] og [ u ] laves om og udskrives ligesom i preview, så dette fungerer efter hensigten. Det gør jeg på følgende måde:
$text = nl2br(htmlspecialchars($minteksther));
$text = str_replace("[ b ]","<b>", $text);
$text = str_replace("[ /b ]","</b>", $text);
$text = str_replace("[ i ]","<i>", $text);
$text = str_replace("[ /i ]","</i>", $text);
$text = str_replace("[ u ]","<u>", $text);
$text = str_replace("[ /u ]","</u>", $text);
echo $text;
Men hvordan får jeg udskrevet mine links på samme måde som de blev udskrevet i min preview?
Jeg tænker at man nok på en eller anden måde skal ha omskrevet det jeg bruger fra javascriptet til php, så det kan blive brugt der? Men her står jeg så af :/
Mit javascript til preview funktionen ser således ud:
function previewComment()
{
var str = '';
var textarea = document.getElementById('text');
var previewDiv = document.getElementById('preview');
if(!textarea) return false;
if(!previewDiv) return false;
str = textarea.value;
newlineRegex = /\n/ig;
boldRegex = /\[b\](.*?)\[\/b\]/ig;
italicRegex = /\[i\](.*?)\[\/i\]/ig;
underlineRegex = /\[u\](.*?)\[\/u\]/ig;
linkRegex = /\[url\]http:\/\/(.*?)\[\/url\]/ig;
linkRegex2 = /\[url\](.*?)\[\/url\]/ig;
tagStartRegEx = /</ig;
tagEndRegEx = />/ig;
newlineReplace = '<br />';
boldReplace = '<b>$1</b>';
italicReplace = '<i>$1</i>';
underlineReplace = '<u>$1</u>';
linkReplace = '<a href="http://$1" target="_blank" class="alternative">$1</a>';
tagStartReplace = '<';
tagEndReplace = '>';
str = str.replace(tagStartRegEx,tagStartReplace);
str = str.replace(tagEndRegEx,tagEndReplace);
str = str.replace(newlineRegex,newlineReplace);
str = str.replace(boldRegex,boldReplace);
str = str.replace(italicRegex,italicReplace);
str = str.replace(underlineRegex,underlineReplace);
str = str.replace(linkRegex,linkReplace);
str = str.replace(linkRegex2,linkReplace);
str = '<div class="preview"><ul><li><div class="message"><div class="messagetitle"><div class="kommentaroverskrift">Preview</div></div><br /><div class="messagecontent">'+str+'</div><br /></div></li></ul></div>';
previewDiv.innerHTML = str;
return false;
}
