BB-Code probleem
tswebdev - 19/11/2006 18:57 (laatste wijziging 19/11/2006 19:00)
PHP interesse
Ik heb ff een functie gemaakt die bb-code omzet in html tags, maar het gedeelte van [url] werkt niet zoals ik het wil. Momenteel zet hij de [url] tag om naar <a href=\" en de [/url] tag zet hij om naar \">-Link-</a>. Dit geeft bv bij deze volgende invoer, de volgende html code.
http://index.php => <a href="index.php">-Link-</a>
Maar ik wil eigenlijk dit krijgen:
[url = index.php]index[/url] => <a href="index.php">index</a>
Maar ik weet niet hoe ik de code juist moet vormen. Kan iemand me hiermee helpen?
Hier is de volledige code, om een beter beeld te krijgen.
Invoer
<?php
if(isset($_POST['submit'])){
$post= $_POST['post'];
include('bb.php');
$post2 = bb($post);
echo $post2;
} else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form action="index.php" method="POST">
<textarea type="text" name="post" rows="10" cols="100">Tekst met BB-code</textarea>
<input type="submit" name="submit" value="BB">
<br>
</body>
</html>
<?php
}
?>
<?php
if ( isset ( $_POST [ 'submit' ] ) ) { $post = $_POST [ 'post' ] ;
include ( 'bb.php' ) ;
$post2 = bb( $post ) ;
} else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form action="index.php" method="POST">
<textarea type="text" name="post" rows="10" cols="100">Tekst met BB-code</textarea>
<input type="submit" name="submit" value="BB">
<br>
</body>
</html>
<?php
}
?>
Functie
<?php
function bb($msg) {
$msg = str_replace("[url]", "<a href=\"", $msg);
$msg = str_replace("[/url]", "\">-Link-</a>", $msg);
return $msg;
}
?>
<?php
function bb( $msg ) {
return $msg ;
}
?>
15 antwoorden
Gesponsorde links
vinTage - 19/11/2006 19:19
Nieuw lid
$msg = str_replace("#\[url\](.*?)\[/url\]#i","<a href='\\1'>\\1</a>",$msg);
$msg = str_replace ( "#\[url\](.*?)\[/url\]#i" , "<a href='\\1 '>\\1 </a>" , $msg ) ;
tswebdev - 19/11/2006 19:28 (laatste wijziging 19/11/2006 19:30)
PHP interesse
nogal onduidelijke code. En de code werkt niet
Meer uitleg gevraagd
vinTage - 19/11/2006 19:29
Nieuw lid
gewoon copy pasten, of ga regex leren ;)
tswebdev - 19/11/2006 19:30
PHP interesse
Code werkt niet
vinTage - 19/11/2006 19:30
Nieuw lid
wel in je functie zetten he..
tswebdev - 19/11/2006 19:33
PHP interesse
heb ik gedaan, de code werkt niet
vinTage - 19/11/2006 19:33 (laatste wijziging 19/11/2006 19:35)
Nieuw lid
<?php
$msg = '[url]www.vintagesworld.be[/url]';
$msg = preg_replace("#\[url\](.*?)\[/url\]#i","<a href='\\1'>\\1</a>",$msg);
echo $msg;
?>
<?php
$msg = '[url]www.vintagesworld.be[/url]' ;
$msg = preg_replace ( "#\[url\](.*?)\[/url\]#i" , "<a href='\\1 '>\\1 </a>" , $msg ) ; ?>
test maar op een nieuw php bestandje..
edit , ff adres veranderd in deze code
tswebdev - 19/11/2006 19:37 (laatste wijziging 19/11/2006 19:39)
PHP interesse
je begrijpt me verkeerd. Wat jij met je code doet kan ik ook, maar de bb-code: [url = index.php]index[/url] moet omgezet worden naar <a href="index.php">index</a>. Wat jij doet is dit:
http://index.php => <a href="index.php">index.php</a>
vinTage - 19/11/2006 19:38 (laatste wijziging 19/11/2006 19:42)
Nieuw lid
ik had een fout gemaakt in mn eerste post, het moest preg ipv str zijn
dit dan ?
<?php
$msg = '[url=vintagesworld.be]vintagesworld[/url]';
$msg = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#i","<a href='\\1'>\\2</a>",$msg);
echo $msg;
?>
<?php
$msg = '[url=vintagesworld.be]vintagesworld[/url]' ;
$msg = preg_replace ( "#\[url=(.*?)\](.*?)\[/url\]#i" , "<a href='\\1 '>\\2 </a>" , $msg ) ; ?>
tswebdev - 19/11/2006 19:42 (laatste wijziging 19/11/2006 19:42)
PHP interesse
kijk als je hier op sima in je bericht dit zet:
[url = index.php]index[/url] (maar dan zonder spaties voor en na =)
dan krijg je dit:
index
dit wil ik dus ook verkrijgen
vinTage - 19/11/2006 19:42 (laatste wijziging 19/11/2006 19:43)
Nieuw lid
zie edit hiervoor oftewel
<?php
$msg = '[url=vintagesworld.be]vintagesworld[/url]';
$msg = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#i","<a href='\\1'>\\2</a>",$msg);
echo $msg;
?>
<?php
$msg = '[url=vintagesworld.be]vintagesworld[/url]' ;
$msg = preg_replace ( "#\[url=(.*?)\](.*?)\[/url\]#i" , "<a href='\\1 '>\\2 </a>" , $msg ) ; ?>
Stijn - 19/11/2006 19:42 (laatste wijziging 19/11/2006 19:43)
PHP expert
<?php
$msg = '[url]www.vintagesworld.be[/url]';
$msg = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#i","<a href='\\1'>\\2</a>",$msg);
echo $msg;
?>
<?php
$msg = '[url]www.vintagesworld.be[/url]' ;
$msg = preg_replace ( "#\[url=(.*?)\](.*?)\[/url\]#i" , "<a href='\\1 '>\\2 </a>" , $msg ) ; ?>
stijn
[edit]
te laat
Richard - 20/11/2006 08:12
Crew algemeen
Pff, in plaats van dat iemand nou eens serieus regexes gaat leren maken op een efficiente manier, maar nee.
<?php
$msg = '[url=www.vintagesworld.be]blaat[/url]';
$msg = preg_replace("~\[url=([^]]+)]([^[]+)\[/url]~i','<a href="$1">$2</a>', $msg);
echo $msg;
<?php
$msg = '[url=www.vintagesworld.be]blaat[/url]' ;
$msg = preg_replace ( "~\[url=([^]]+)]([^[]+)\[/url]~i','<a href=" $
1 ">$2 </a>', $msg ); echo $msg ;
Ziedaar, geen onnodige laziness (traag), escapes weg waar nutteloos. Maar: zoals bosgroen al zei, dit is nog steeds gevaarlijk ivm XSS, dus je kunt beter '[^]]+' vervangen door een regex die een url matcht ;)
Gesponsorde links
Dit onderwerp is gesloten .