Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 13:05 Der er 14 kommentarer og
4 løsninger

Egne tags. [B] i stedet for <B>

Hvordan er det muligt at tjekke om en person har skrevet [B]Hejsa med dig[/B] og så om sætte det til <B>Hejsa med dig</B> ??

Jeg har slet ingen ide om hvor jeg skal starte på dette problem, så derfor et spørgsmål her inde ;D
Avatar billede ahv Nybegynder
27. maj 2003 - 13:10 #1
$_POST['msg'] = ereg_Replace("\([^*]+)\", "<b>\\1</b>", $_POST['msg'])

prøv det
Avatar billede ahv Nybegynder
27. maj 2003 - 13:11 #2
Eksempel:

<?php
$text = " heej hey";
$text = ereg_Replace("\([^*]+)\", "<b>\\1</b>", $text);
echo $text;
?>
Avatar billede thomashove Nybegynder
27. maj 2003 - 13:19 #3
eller...

$txt="[B]Hejsa med dig[/B]";
$new = str_replace("[", "<", "$txt");
$new = str_replace("]", ">", "$new");
echo $new;
Avatar billede razor Nybegynder
27. maj 2003 - 13:23 #4
ahv, hvad gør "[^*]+" ?
Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 13:37 #5
$text = ereg_Replace("([^*]+)", "<b>1</b>", $text);

eller

$text = ereg_Replace("\([^*]+)\", "<b>\\1</b>", $text);


Hvad nu hvis personen skriver [B] uden mellemrum mellem resten af teksten ??
Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 13:41 #6
thomasshove: Jeg kan ikke rigtigt bruge din, da jeg skal have flettet det sammen med et database udtræk og der derfor sagtens kan være mere end kun [B]

Det skal i sidste ende komme til at virke med [B][/B] - [U][/U] - [I][/I] - [B][/B]...
Avatar billede qub- Novice
27. maj 2003 - 13:41 #7
Hejza..

Jeg har lavet det sådan her på mit site:

<?
$row['body'] = eregi_replace("[B](.+)</B>","<B>\\1</B>",$row['body']);
?>

Hvor body er den mysql tabel jeg linker til!!!

håber du kan bruge det..
Avatar billede sostack Nybegynder
27. maj 2003 - 14:12 #8
Som thomashove har lavet det, kan det bruges med alle [] tags, uanset hvad det er for "omskrevne-HTML-tags", så hvorfor skulle det ikke kunne bruges??

//sostack
Avatar billede sostack Nybegynder
27. maj 2003 - 14:20 #9
prøv at se forskellen på disse to scripts:
<?php
$teststreng = "Det skal i sidste ende komme til at virke med [B][/B] - [U][/U] - [I][/I] - [B][/B] - [SUPER][/SUPER] - [SUB][/SUB]";
$new = str_replace("[", "<", $teststreng);
$new = str_replace("]", ">", $new);
echo $new;
?>

<?php
$teststreng = "Det skal i sidste ende komme til at virke med [B][/B] - [U][/U] - [I][/I] - [B][/B] - [SUPER][/SUPER] - [SUB][/SUB]";
$new = eregi_replace("[B](.+)[/B]","<B>\\1</B>",$teststreng);
$new = eregi_replace("[U](.+)[/U]","<U>\\1</U>",$new);
$new = eregi_replace("[I](.+)[/I]","<B>\\1</B>",$new);
echo $new;
?>

//sostack
Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 14:21 #10
Jeg kan ikke få dette til at virke:

$tekst = eregi_replace("\$starttag([^*]+)\$endtag", "$htmlstart\\1$htmlend", $text);

Det skal lige siges at $starttag, $endtag, $htmlstart og $htmlend er arrays
Avatar billede sostack Nybegynder
27. maj 2003 - 14:21 #11
$new = eregi_replace("[I](.+)[/I]","<B>\\1</B>",$new);
skal self. være:
$new = eregi_replace("[I](.+)[/I]","<I>\\1</I>",$new);
Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 14:22 #12
Ja, men hvis jeg så vil udbygge det med LINK, så kan den jo ikke bruges mere....
Avatar billede sostack Nybegynder
27. maj 2003 - 14:29 #13
prøv:
<?php
$teststreng = "Det skal i sidste ende komme til at virke med [B][/B] - [U][/U] - [I][/I] - [B][/B] - [SUPER][/SUPER] - [SUB][/SUB]";
$starttags = Array([B], [I], [U]);
$sluttags = Array([/B], [/I], [/U]);
$htmlstart = Array(<B>, <I>, <U>);
$htmlslut = Array(</B>, </I>, </U>);
for($i = 0; $i < count($starttags); $i++)
    {
    $teststreng = eregi_replace(" . $starttags[$i] . "(.+)" . $sluttags[$i] . "," . $htmlstart[$i] . "\\1" . $htmlslut . "," . $teststreng);
    }
echo $teststreng;
?>

//sostack
Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 14:56 #14
Der var nogle fejl, som jeg har rettet, så den kom til at se sådan her ud:

$tekst = str_replace("".$starttag[$tags]."(.+)".$sluttag[$tags]."","".$htmlstart[$tags]."\\1".$htmlend[$tags]."", $text2);

Men resultatet er stadig det samme som det der er i databasen.

Kan man ikke bruge str_replace i stedet for eregi_replace ??
Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 15:03 #15
Hvis jeg bruger det eksempel som du er kommet med, så får jeg dette resultat

Det skal <I> sidste ende komme til at virke med [<B>]Hejsa[/B] - [<U>][/U] - [I][/I] - [B][/B] - [SUPER][/SUPER] - [SUB][ArraySArrayArray]

Det var jo ikke lige det resultat jeg søgte, men der sker da noget
Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 15:05 #16
Ok, har fundet ud af at det skal være eregi_replace

Nu er problemet bare det at jeg ikke kan få den til at gøre det rigtigt
Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 15:41 #17
Jeg har fået det til at virke med str_replace, men i får nu point alle sammen alligevel

Ellers må i jo brokke jer
Avatar billede pissed_squirrel Nybegynder
27. maj 2003 - 19:26 #18
Jeg brugte denne løsning hvis andre skulle søge det samme:

$text1 = str_replace($starttag, $htmlstart, $text);
$tekst = str_replace($endtag, $htmlend, $text1);
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