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 fed, skrå, understreget, så bliver disse tags omskrevet så man i sit preview ser fed, skrå og understreget tekst. Faktisk præcis på samme måde som herinde kan jeg se. Det samme sker hvis man bruger [url][/url] tag - her bliver der nemlig udskrevet et link! Dette fungerer helt som det skal.
Problemet:
Problemet opstår når kommentaren er blevet gemt i databasen og udskrives.
Jeg har fået gjort sådan at , og 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>", $text);
$text = str_replace("[i]","<i>", $text);
$text = str_replace("","</i>", $text);
$text = str_replace("[u]","<u>", $text);
$text = str_replace("","</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;
}
