preg_replace probleem (Opgelost)
W0etah - 23/06/2007 19:41
PHP beginner
Hallo, ik ben bezig met het maken van een kleine ubb parser.
Ik zit enkel met een probleem als ik alles wil omzetten, dus met preg_replace
ik gebruik deze code
<?php
function ubb($wat) {
$pattern = array('<b>', '<i>');
$replace = array('<bold>', '<em>');
$tekst = preg_replace($pattern, $replace, $wat);
return $tekst;
}
?>
<?php
function ubb( $wat ) {
$pattern = array ( '<b>' , '<i>' ) ; $replace = array ( '<bold>' , '<em>' ) ;
return $tekst ;
}
?>
maar als de tekst nu bestaat uit: "<b></b>"
dan toont hij gewoon dit: "<></>"
weet iemand de oplossing hiervoor?
14 antwoorden
Gesponsorde links
Stijn - 23/06/2007 19:55 (laatste wijziging 23/06/2007 20:48)
PHP expert
preg_replace("#[b](.*?)[/b]#" , "<b>\\1</b>" , $wat);
zo hoort het. preg_replace werkt niet met aray's, [php]str_replace[/b] wel.
W0etah - 23/06/2007 20:41
PHP beginner
<?php
function ubb($wat) {
$pattern = array('/<b>/', '/<i>/');
$replace = array('<strong>', '<em>');
$tekst = preg_replace($pattern, $replace, $wat);
return $tekst;
}
?>
<?php
function ubb( $wat ) {
$pattern = array ( '/<b>/' , '/<i>/' ) ; $replace = array ( '<strong>' , '<em>' ) ;
return $tekst ;
}
?>
ik heb het nu zo, zoals boukefalos had gezegt, maar dat doet hij nog niet, nu blijft die <b> gewoon staan
Sam - 24/06/2007 01:18
PHP expert
Moeten er bij die $replace ook geen delimiters staan?
W0etah - 24/06/2007 01:22
PHP beginner
dat had ik al verandert, maar ik vindt het wel raar, want in mijn database slaagt hij het anders op
namenlijk zo: <b></b>
vinTage - 24/06/2007 01:35
Nieuw lid
je moet je dat ook zo "puur" mogelijk opslaan, nu heb je het wss opgeslagen dmv htmlentities ?
side , ik weet niet of dit iets uit zou moeten maken.
Wat ik normaal doe, is de data zo orgineel mogelijk opslaan (alleen mysql_rea_escape_string) en bij het uitlezen kan je dan nog doen wat je wilt.
W0etah - 24/06/2007 01:47 (laatste wijziging 24/06/2007 01:49)
PHP beginner
ah, bedankt vintage, nu zet hij de html code wel in mijn database.
Ik hoop dat het zo veilig is??
maar nu krijg ik een fout met die ubb parser
Parse error: syntax error, unexpected '<' in /Users/WoutR/MAMP website's/forum/functies/ubb.php(3) : regexp code on line 1
Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: <strong> </strong> in /Users/WoutR/MAMP website's/forum/functies/ubb.php on line 3
Parse error: syntax error, unexpected '<' in / Users/ WoutR/ MAMP website's/forum/functies/ubb.php(3) : regexp code on line 1
Fatal error: preg_replace() [<a href=' function . preg- replace'>function.preg-replace</a>]: Failed evaluating code: <strong> </strong> in /Users/WoutR/MAMP website' s/ forum/ functies/ ubb. php on line 3
dat is de ubb parser
<?php
$bericht = preg_replace('_\<b\>(.*?)\</b\>_ise',"<strong> \\1 </strong>",$wat);
?>
<?php
$bericht = preg_replace ( '_\<b\>(.*?)\</b\>_ise' , "<strong> \\1 </strong>" , $wat ) ; ?>
edit:
ik heb de code van stijn geprobeert en die werkte wel
$bericht = preg_replace("#<b>(.*?)</b>#" , "<strong>\\1</strong>" , $wat);
$bericht = preg_replace ( "#<b>(.*?)</b>#" , "<strong>\\1 </strong>" , $wat ) ;
vinTage - 24/06/2007 01:52 (laatste wijziging 24/06/2007 01:54)
Nieuw lid
Op mijn site gebruik ik (beetje uitgebreid) de ubb class van Dolfje (thx Dolf)
zal even zoeken of ik de link nog kan vinden
edit: http://www.sitemasters.be/?pagina=battles/battles&battleID=105&nav=1
W0etah - 24/06/2007 02:06
PHP beginner
@vintage, dan weet jij miss het antwoord op mijn vraag wel.
Op jouw site, wanneer je wilt reageren, je typt iets in het tekstvak, selecteerd die tekst en dan druk je op de "b" knop en dan zet hij automatisch die tags rond de geselecteerde tekst.
Hoe heb je zoiets gedaan?
W0etah - 24/06/2007 02:11
PHP beginner
hoebedoel je?
Dus jullie kunnen geen text selecteren en dan op die knop drukken en hij komt er rond?
Jullie moeten drukken, je muis verplaatsen en dan pas typen?
vinTage - 24/06/2007 02:14 (laatste wijziging 24/06/2007 02:31)
Nieuw lid
ik moet iets typen/selecten/klik bold btn/ en dan staat er [b]...[/b] omheen
ik moet iets typen/ selecten/ klik bold btn/ en dan staat er [ b] ... [ / b] omheen
of
klik B, typen, nogmaals B
klik B, typen, nogmaals B
edit: ow, nouw snap ik je pas, je bedoeld doe B button, ik dacht heel de tijd de B op je keyboard...my bad
its all in ubb.js op mijn site (by FangorN )
marten - 24/06/2007 10:38
Beheerder
Misschien een tip. De meeste wysiwyg editors kan je selecteren en dan ctrl-b doen. Misschien kan je deze code eens onderzoeken hoe ze dat doen. (Let op copyright)
W0etah - 24/06/2007 10:51
PHP beginner
ik heb een verkorte versie gemaakt van die van op vintage zijn site.
ik heb het erbij gezet:
// made by Thomas van den Heuvel aka FangorN - leafblighter[at]gmail[dot]com
Gesponsorde links
Dit onderwerp is gesloten .