Avatar billede sylvesternielsen Nybegynder
05. marts 2002 - 11:52 Der er 8 kommentarer og
1 løsning

Køre ereg_replace() til alle tags er væk

Her er noget kode som behandler min data fra den kommer fra mit textarea og før den bliver sendt i databasen. Problemmet er at den hvis man skriver /c/ to gange kun tager og laver den første om til <center>....
Hvad skal jeg gøre?
-------------------------------------------------------
if ($infotekst){
$infotekst = ereg_replace("http://([a-zA-Z0-9@:%_.~#-\?&]*)", "<a target=_blank href=\"http://\\1\">\\1</a>", $infotekst);
$infotekst = ereg_replace("([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+[.]{1}[a-zA-Z0-9._-]+)","<a href=\"mailto:\\1\">\\1</a>",$infotekst);
$infotekst = ereg_replace("www.([a-zA-Z0-9._-]+[.]{1}[a-zA-Z0-9._-]+)","<a target=_blank href=\"http://www.\\1\">\\1</a>",$infotekst);
$infotekst = ereg_replace("/c/([^+]+)", "<center>\\1", $infotekst);
$infotekst = ereg_replace("([^+]+)/cs/", "\\1</center>", $infotekst);
$infotekst = ereg_replace("/b/([^+]+)", "<b>\\1", $infotekst);
$infotekst = ereg_replace("([^+]+)/bs/", "\\1</b>", $infotekst);   
$infotekst = ereg_replace("_([^+]+)_", "<i>\\1</i>", $infotekst);
$infotekst = nl2br($infotekst);
Avatar billede sylvesternielsen Nybegynder
05. marts 2002 - 11:54 #1
ved ikke hvad der gik galt her..
Her er noget kode som behandler min data fra den kommer fra mit textarea og før den bliver sendt i databasen. Problemmet er at den hvis man f.eks skriver /c/ to gange laver den kun den første om til <center>....
Hvad skal jeg gøre?
-------------------------------------------------------
if ($infotekst){
$infotekst = ereg_replace("http://([a-zA-Z0-9@:%_.~#-\?&]*)", "<a target=_blank href=\"http://\\1\">\\1</a>", $infotekst);
$infotekst = ereg_replace("([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+[.]{1}[a-zA-Z0-9._-]+)","<a href=\"mailto:\\1\">\\1</a>",$infotekst);
$infotekst = ereg_replace("www.([a-zA-Z0-9._-]+[.]{1}[a-zA-Z0-9._-]+)","<a target=_blank href=\"http://www.\\1\">\\1</a>",$infotekst);
$infotekst = ereg_replace("/c/([^+]+)", "<center>\\1", $infotekst);
$infotekst = ereg_replace("([^+]+)/cs/", "\\1</center>", $infotekst);
$infotekst = ereg_replace("/b/([^+]+)", "<b>\\1", $infotekst);
$infotekst = ereg_replace("([^+]+)/bs/", "\\1</b>", $infotekst);   
$infotekst = ereg_replace("_([^+]+)_", "<i>\\1</i>", $infotekst);
$infotekst = nl2br($infotekst);
Avatar billede invisibleman Nybegynder
05. marts 2002 - 11:56 #2
Hvorfor bruger du ikke bare:

$infotekst = strip_tags($infotekst, "<a>,<center>,<b>,<i>");

Så vil den fjerne alle HTML tags undtagen <a href..></a>, <center></center>, <b></b> og <i></i> ..

Meget nemmere .. så kan du tillade normale HTML tags til <center> osv.
Avatar billede sylvesternielsen Nybegynder
05. marts 2002 - 11:58 #3
Øhhhh, tror du har misforstået min kode... Grunden er at hende som skal bruge systemet ikke kender html osv. derfor er det lettere for hende at bruge andre koder som f.eks. /c/ til at centrere.
Avatar billede erikjacobsen Ekspert
05. marts 2002 - 12:46 #4
Prøv preg-funktionerne (her dig kun for center bold og italic):

$infotekst = "/c/TEKST1/cs/  ... /c/TEKST2/cs/  _italic_ /b/FED</bs/ _italic igen_";

$search=array("'/c/'im",
              "'/cs/'im",
              "'/b/'im",
              "'/bs/'im",
              "'_(.*?)_'im");

$replace=array("<center>",
              "</center>",
              "<b>",
              "</b>",
              "<i>\\1</i>");
$infotekst = preg_replace ($search, $replace, $infotekst);
Avatar billede mortenfn Nybegynder
05. marts 2002 - 20:42 #5
hvorfor ikk' bare

strip_tags ($text,'tilladte taks')

f.eks.

$text = strip_tags ($text,'<a><b><i><u>')
Avatar billede mortenfn Nybegynder
05. marts 2002 - 20:43 #6
invisibleman >> så dig ikke !
Avatar billede erikjacobsen Ekspert
06. marts 2002 - 10:54 #7
Den bemærkning er faktisk ret sjov - når man lige tænker efter, mortenfn..... :)

Jeg vil lige sige at det burde kunne gøres lidt simplere:

$infotekst = "/c/TEKST1/cs/  ... /c/TEKST2/cs/  _italic_ /b/FED</bs/ _italic igen_";

$search=array("'/c/(.*?)/cs/'im",
                    "'/b/(.*?)/bs/'im",
                    "'_(.*?)_'im");

$replace=array("<center>\\1</center>",
                      "<b>\\1</b>",
                      "<i>\\1</i>");
$infotekst = preg_replace ($search, $replace, $infotekst);
Avatar billede cen Nybegynder
06. marts 2002 - 14:49 #8
Dette kan skulle kunne klare det...

- CEN

------------------------------------------

function string_tagster($str) {
        $str = " ".$str." ";

        $str = eregi_replace("([[:space:]{()\"'\[~#=:;\&?\_])((ftp|http|https|telnet|news|nttp|nntp|file):\/\/[a-z0-9~#%@æøå\&\(\):;=\?\/\.,_-]+(\\[|\\]|[a-z0-9~#%@æøå\*\&:;.,=\?!'\/_\+-])+)", "\\1<A HREF=\"\\2\" TARGET=\"_blank\">\\2</A>", $str);
        $str = eregi_replace("([[:space:]{()\"'\[~#:;\&?\_])(www\.[a-z0-9~#%@æøå\&\(\):;=\?!'\/\.,_-]+(\\[|\\]|[a-z0-9~#%@æøå\*\&:;.,=\?!'\/_\+-])+)", "\\1<A HREF=\"http://\\2\" TARGET=\"_blank\">\\2</A>", $str);
        $str = eregi_replace("([[:space:]{()\"'\[~#=:;\&?\_])(ftp\.[a-z0-9~#%@æøå\&\(\):;=\?!'\/\.,_-]+(\\[|\\]|[a-z0-9~#%@æøå\&:;.,=\?!'\/_\+-])+)", "\\1<A HREF=\"ftp://\\2\" >\\2</A>", $str);

        $str = eregi_replace("(mail:|[[:space:]{()\"'\[~#=;\&?])([_\.0-9a-z-]+@([_\.0-9a-z-]+)+\.[a-z]{2,4})","\\1<A HREF=\"mailto:\\2\">\\2</A>", $str);

        return substr($str, 1);
    }

    function format_output($str) {
                $str = strip_tags($str, "<a>,<center>,<b>,<i>,<FONT>");
        $str = str_replace("&quot;", "\"", $str);
        $str = string_tagster($str);
        $str = ereg_replace("'</A>", "</A>'", $str);
        $str = ereg_replace("'\" TARGET=\"_blank\">", "\" TARGET=\"_blank\">'", $str);
        $str = ereg_replace("  ", "&nbsp; ", $str);
        $str = str_replace("\\t", "&nbsp;&nbsp;&nbsp; ", $str);
        $str = str_replace("\\r", "", $str);
        $str = str_replace("\\n", "<BR>", $str);
        $str = nl2br($str);
        return $str;
    }

$search=array("'/c/'im",
              "'/cs/'im",
              "'/f/'im",
              "'/fs/'im",
              "'/3/'im",
              "'/3s/'im",
              "'/2/'im",
              "'/2s/'im",
              "'/1/'im",
              "'/1s/'im",
              "'/k/'im",
              "'/ks/'im");

$replace=array("<center>",
              "</center>",
              "<b>",
              "</b>",
              "<FONT SIZE='7'>",
              "</FONT>",
              "<FONT SIZE='5'>",
              "</FONT>",
              "<FONT SIZE='1'>>",
              "</FONT>",
              "<i>",
              "</i>");

$infotekst = preg_replace ($search, $replace, $infotekst);

$infotekst = format_output($infotekst);
echo "$infotekst";
Avatar billede sylvesternielsen Nybegynder
11. marts 2002 - 08:14 #9
kigger lige på det en af dagene, men ghar desværre ikke tid lige nu...
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