login  Naam:   Wachtwoord: 
Registreer je!
 Forum

preg_replace probleem (Opgelost)

Offline W0etah - 23/06/2007 19:41
Avatar van W0etahPHP 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

  1. <?php
  2. function ubb($wat) {
  3. $pattern = array('<b>', '<i>');
  4. $replace = array('<bold>', '<em>');
  5. $tekst = preg_replace($pattern, $replace, $wat);
  6.  
  7. return $tekst;
  8. }
  9. ?>


maar als de tekst nu bestaat uit: "<b></b>"
dan toont hij gewoon dit: "<></>"

weet iemand de oplossing hiervoor?

14 antwoorden

Gesponsorde links
Offline Stijn - 23/06/2007 19:55 (laatste wijziging 23/06/2007 20:48)
Avatar van Stijn PHP expert
  1. preg_replace("#[b](.*?)[/b]#" , "<b>\\1</b>" , $wat);
zo hoort het. preg_replace werkt niet met aray's, [php]str_replace[/b] wel.
Offline Rik - 23/06/2007 20:00 (laatste wijziging 23/06/2007 20:17)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Als je in de html source kijkt zie je dat hij er
Citaat:
<<bold>></<bold>>

van maakt.

Dat komt omdat je de delimiters bent vergeten:
  1. $pattern = array('<b>', '<i>');
==>
  1. $pattern = array('/<b>/', '/<i>/');


En volgens mij bestaat er geen html tag 'bold' en moet dat 'strong' zijn. 

Edit:
@hierboven
PHP.net: preg_replace, toch wel kijk maar bij voorbeeld 1533 en 1534. 
Offline W0etah - 23/06/2007 20:41
Avatar van W0etah PHP beginner
  1. <?php
  2. function ubb($wat) {
  3. $pattern = array('/<b>/', '/<i>/');
  4. $replace = array('<strong>', '<em>');
  5. $tekst = preg_replace($pattern, $replace, $wat);
  6.  
  7. return $tekst;
  8. }
  9. ?>


ik heb het nu zo, zoals boukefalos had gezegt, maar dat doet hij nog niet, nu blijft die <b> gewoon staan
Offline Sam - 24/06/2007 01:18
Avatar van Sam PHP expert Moeten er bij die $replace ook geen delimiters staan?
Offline W0etah - 24/06/2007 01:22
Avatar van W0etah PHP beginner dat had ik al verandert, maar ik vindt het wel raar, want in mijn database slaagt hij het anders op

namenlijk zo: &lt;b&gt;&lt;/b&gt;
Offline vinTage - 24/06/2007 01:35
Avatar van vinTage 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.
Offline W0etah - 24/06/2007 01:47 (laatste wijziging 24/06/2007 01:49)
Avatar van W0etah 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
  1. Parse error: syntax error, unexpected '<' in /Users/WoutR/MAMP website's/forum/functies/ubb.php(3) : regexp code on line 1
  2.  
  3. Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: &lt;strong&gt; &lt;/strong&gt; in /Users/WoutR/MAMP website's/forum/functies/ubb.php on line 3


dat is de ubb parser
  1. <?php
  2. $bericht = preg_replace('_\<b\>(.*?)\</b\>_ise',"<strong> \\1 </strong>",$wat);
  3. ?>



edit:
ik heb de code van stijn geprobeert en die werkte wel
  1. $bericht = preg_replace("#<b>(.*?)</b>#" , "<strong>\\1</strong>" , $wat);
Offline vinTage - 24/06/2007 01:52 (laatste wijziging 24/06/2007 01:54)
Avatar van vinTage 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
Offline W0etah - 24/06/2007 02:06
Avatar van W0etah 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?
Offline vinTage - 24/06/2007 02:08 (laatste wijziging 24/06/2007 02:11)
Avatar van vinTage Nieuw lid believe me in this one, "ik heb NIKS gedaan"
(je zei zoiets ook al in een ander topic over de sima reactie form meuk...hier heb ik dat ook niet, het is vast een mac feature)


ps: ik gebruik wel hetzelfde ubb.js als op sima, mss heeft fangorn er iets over mee gescript, ik heb eerlijk gezegd mezelf daar niet in verdiept 
Offline W0etah - 24/06/2007 02:11
Avatar van W0etah 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?
Offline vinTage - 24/06/2007 02:14 (laatste wijziging 24/06/2007 02:31)
Avatar van vinTage Nieuw lid
  1. ik moet iets typen/selecten/klik bold btn/ en dan staat er [b]...[/b] omheen


of

  1. 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)
Offline marten - 24/06/2007 10:38
Avatar van marten 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)
Offline W0etah - 24/06/2007 10:51
Avatar van W0etah 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.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.357s