Avatar billede kgp43 Nybegynder
10. februar 2005 - 22:52 Der er 17 kommentarer og
2 løsninger

Fjern HTML tags, men ikke alle

Hejsa,

Jeg bruger nedestående kode til at fjerne html tags fra min gæstebog. Problemet er bare at den fjerne alle html tags og jeg vil gerne tillade nogle enkelse (se nedenfor).

//Remove HTML tags
$form_name = ereg_replace("<.*>","",$form_name);
$form_name = trim($form_name);
$form_title = ereg_replace("<.*>","",$form_title);
$form_title = trim($form_title);
$form_message = ereg_replace("<.*>","",$form_message);
$form_message = trim($form_message);

Vil gerne tillade følgende:
<a> <b> <dd> <dl> <dt> <i> <li> <ol> <u> <ul> <img> <strong> <em> <i> <br> <p> <span> <blockquote>


hvordan gøres dette bedst muligt?
Avatar billede tigertool Nybegynder
10. februar 2005 - 22:54 #1
Avatar billede tigertool Nybegynder
10. februar 2005 - 22:58 #2
Forklaring:

Med denne funktion kan du vælge hvilke HTML tags du vil tillade:

Eksempel:
//antag at $text indeholder dit html
echo strip_tags($text, '<p><b><i><u>');

Nu tillades kun <p>, <b>, <i> og <u>
Avatar billede kgp43 Nybegynder
10. februar 2005 - 23:17 #3
Burde dette ikke virke?

//Remove HTML tags but allow a few once
    $allow_tags = array("<a>","<b>","<i>","<li>","<ol>","<u>","<ul>","<img>","<strong>","<em>","<i>");

    strip_tags($comment_fetch[name], $allow_tags);
    strip_tags($comment_fetch[message], $allow_tags);
    strip_tags($comment_fetch[title], $allow_tags);
Avatar billede tigertool Nybegynder
10. februar 2005 - 23:19 #4
Jo, husk lige at bruge en echo foran strip_tags()
Avatar billede tigertool Nybegynder
10. februar 2005 - 23:20 #5
Øhhh.. nej, $allow_tags skal ikke være et array, bare en almindelig string.
Avatar billede kgp43 Nybegynder
10. februar 2005 - 23:25 #6
Det virkede, men nu efterlader den en masse "tomme felter". Har prøvet at fjerne det med trim(), men uden resultat

//Remove HTML tags but allow a few once
$allow_tags = "<a><b><i><li><ol><u><ul><img><strong><em><i>";

//Remove HTML tags
$comment_fetch[name] = strip_tags($comment_fetch[name], '$allow_tags');
$comment_fetch[message] = strip_tags($comment_fetch[message], '$allow_tags');
$comment_fetch[title] = strip_tags($comment_fetch[title], '$allow_tags');

//Remove white spaces in the end of the string
$comment_fetch[name] = trim($comment_fetch[name]);
$comment_fetch[message] = trim($comment_fetch[message]);
$comment_fetch[title] = trim($comment_fetch[title]);
Avatar billede tigertool Nybegynder
10. februar 2005 - 23:28 #7
men trim fjerner da kun i enderne af stringen, korrekt?
Avatar billede kgp43 Nybegynder
10. februar 2005 - 23:30 #8
det er rigtigt.
Er der en måde at fjerne det i hele stringen?
Avatar billede kgp43 Nybegynder
10. februar 2005 - 23:32 #9
trim fjerne i start og slut af en streng
Avatar billede tigertool Nybegynder
10. februar 2005 - 23:34 #10
Jeg kan ikke lige funde en function til det - men man kan jo lave en selv forholdsvis simpelt.
Avatar billede kgp43 Nybegynder
10. februar 2005 - 23:36 #11
dette er "resterne":

here goes:<br />
<br />
<br />
  <br />
    &nbsp;<br />
    &nbsp;<br />
  <br />
  <br />
    &nbsp;<br />
    &nbsp;<br />
  <br />
  <br />
    &nbsp;<br />
    &nbsp;<br />
  <br />
  <br />
    &nbsp;<br />
    &nbsp;<br />
  <br />
Avatar billede kgp43 Nybegynder
10. februar 2005 - 23:39 #12
str_replace virker vel heller ikke, da den også vil gerne "lovlige" linieskift
Avatar billede dmcn Praktikant
10. februar 2005 - 23:43 #13
Bemærk lige, at strip_tags er en "dum" funktion. Hvis du godkender visse tags, vil brugerne kunne skrive: <p onload="document.location.href='http://example.org';">foo</p> og viderestille dine brugere uden de store problemer.
Avatar billede kgp43 Nybegynder
10. februar 2005 - 23:47 #14
Okay :P
Hvilken metode skal jeg så bruge?
Avatar billede dmcn Praktikant
10. februar 2005 - 23:53 #15
Principielt set er jeg imod at give brugerne adgang til brug af HTML-tags. Du kan dog lave "falske" tags, f.eks. , , , osv., og så blot køre str_replace på dem. På den måde får dine brugere adgang til nogen tags, men du har stadig fuld kontrol over hvad der sker med dem.
Avatar billede kgp43 Nybegynder
10. februar 2005 - 23:54 #16
ahhh, det var en bedre ide :)
Ligger i et svar, så er der point.
Avatar billede dmcn Praktikant
11. februar 2005 - 00:01 #17
Boing. :)
Avatar billede kgp43 Nybegynder
11. februar 2005 - 00:08 #18
Sådan, så skulle det være ok.
Kan bare ikke lige se hvordan jeg kan lave et link-tag

//Remove real HTML tags
$comment_fetch[name] = ereg_replace("<.*>","",$comment_fetch[name]);
$comment_fetch[name] = trim($comment_fetch[name]);
$comment_fetch[message] = ereg_replace("<.*>","",$comment_fetch[message]);
$comment_fetch[message] = trim($comment_fetch[message]);
$comment_fetch[title] = ereg_replace("<.*>","",$comment_fetch[title]);
$comment_fetch[title] = trim($comment_fetch[title]);

//HTML "tag" rules
$tags_replace = array("[a]","[b]","[i]","[li]","[u]","[ul]","[img]","[strong]","[em]","[i]");
$tags_replace_with = array("<a>","<b>","<i>","<li>","<u>","<ul>","<img>","<strong>","<em>","<i>");
   
$comment_fetch[name] = str_replace($tags_replace, $tags_replace_with, $comment_fetch[name]);
$comment_fetch[message] = str_replace($tags_replace, $tags_replace_with, $comment_fetch[message]);
$comment_fetch[title] = str_replace($tags_replace, $tags_replace_with, $comment_fetch[title]);
Avatar billede kgp43 Nybegynder
11. februar 2005 - 01:47 #19
løste url or img problemet :)

//Replace "dummy-urls" with real once
$comment_fetch[message] = eregi_replace("\[url\](www([^[]+))\[/url\]","<a href=\"http://www\\2\">\\1</a>",$comment_fetch[message]);
$comment_fetch[message] = eregi_replace("\[url\]([^[]+)\[/url\]","<a href=\"\\1\">\\1</a>",$comment_fetch[message]);

//Replace "dummy-images" with real once
$comment_fetch[message] = eregi_replace("\[img\](www([^[]+))\[/img\]","<img src=\"http://www\\2\">",$comment_fetch[message]);
$comment_fetch[message] = eregi_replace("\[img\]([^[]+)\[/img\]","<img src=\"\\1\">",$comment_fetch[message]);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester