meerdere ubb code's

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 12946 Introductie We are looking for a Java Developer! Our client is one of the most innovation companies located within the Netherlands. We provide high quality software in a high-tech and challenging market. Functieomschrijving The department is specialized in creating and developing high quality software for manufacturing automation in a high tech environment. We strive to provide our clients with high quality software and deliver state of the art solutions in a variety of ways. Creating software infrastructure using Java SE / EE Create applications to fine tune manufacturing processes

Bekijk vacature »

Junior PHP Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale aspecten van Coolblue. Wat doe je als Junior PHP Developer bij Coolblue? Als Junior PHP Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen om te groeien als Junior Developer. Op dat moment komt je wil om steeds te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te kunnen maken. Je sterk analytisch vermogen komt dan ook goed

Bekijk vacature »

Front end developer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers met passie voor hun vak. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van ontwerp en ontwikkeling zullen samenkomen in een proof of concept. Nadat is vastgesteld dat de oplossing voldoet aan de belangrijkste behoeftes worden producten of services gevalideerd door middel van korte iteraties. Hiermee zorgen ze ervoor dat het werk voldoet aan de technische vereisten en gebruikersbehoefte. Door het inzetten van de nieuwste technologieën die toekomstbestendig zijn weten ze klanten omver te blazen. Ook geven en organiseren ze veel

Bekijk vacature »

Front-end Developer - React - Data Driven

Bedrijfsomschrijving Onze klant is een snelgroeiende organisatie die een data-driven inspectieapp op de markt hebben gebracht die nu al een aantal jaar door verschillende organisaties wereldwijd gebruikt wordt. Er zijn zo'n 6 mensen werkzaam bij dit bedrijf en ze zijn nu vooral op zoek naar een sterke front-end developer die wil gaan werken aan nieuwbouw applicaties en de uitbouw van de huidige applicaties. De reden dat ze zoeken is omdat er veel werk op komst is en ze hier de juiste capaciteit voor willen hebben. Er heerst hier een hele prettige sfeer waarin respect en eerlijke communicatie belangrijk is. Ook

Bekijk vacature »

PHP Developer - medior functie

Functieomschrijving Ben jij innovatief en wil jij je kennis graag delen met jouw nieuwe collega's? Lees dan snel verder! Voor een leuke opdrachtgever in de omgeving van Roosendaal zoeken wij een Symfony developer. Of je nou junior, medior of senior bent, je krijgt hier alle vrijheid en verantwoordelijkheid om jouw eigen loopbaan te ontwikkelen. Je gaat je hier bezig houden met en inspelen op de actualiteiten van jouw vakgebied. Techstack: Symfony, PHP, mySQL. Kennis van Svelte is helemaal mooi meegenomen. Bedrijfsprofiel Al sinds '99 is dit webbureau actief. De kernwaarden binnen het bedrijf zijn integer, dienstbaar en deskundig. Je komt

Bekijk vacature »

SAP HANA Cloud Application Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12662 Introductie HANA Cloud Application Developer at a High Tech company. The company is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. This role is situated in the Big Data Analytics (BDA) Domain. The teams have mixture of young talent and senior specialists and have a

Bekijk vacature »

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

Bekijk vacature »

Senior Front-end developer Consultancy

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Senior Applicatie ontwikkelaar Java

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving We verwachten van je,

Bekijk vacature »

Cloud Engineer

Ben jij een ervaren Cloud Engineer die complexe omgevingen kan overzien en wil je graag in vaste dienst werken bij een professioneel en kleinschalig bedrijf waar je een belangrijke rol kan spelen? Wij, IntelliMagic in Leiden, ontwikkelen specialistische IT monitoring software die we als SaaS oplossing verkopen aan grote bedrijven in Europa en de VS. We zijn een Nederlands bedrijf met een goede sfeer en met grote waardering voor de persoonlijke inbreng en kwaliteiten van onze medewerkers. Wij zoeken een ervaren Cloud Engineer met academisch denkniveau die verantwoordelijk wordt voor het beheer van de cloud infrastructuur voor onze Europese klanten.

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

Ervaren PHP ontwikkelaar

Functie Jij als PHP ontwikkelaar komt te werken in een team van 4 andere PHP ontwikkelaars. Je zult je voornamelijk bezig houden met: – Het ontwikkelen van nieuwe features – Doorontwikkelen van de API – Nadenken over de technische infrastructuur – Datakwaliteit Samen met het team ben jij verantwoordelijk voor de verdere ontwikkeling van de software en om de positie als marktleider in Europa te behouden. Ze werken volgens SCRUM in 2 wekelijkse sprints, werken met Jira voor alle tickets en communiceren veel via Slack. Eisen • Minimaal 3 jaar ervaring als back end developer • Je hebt affiniteit met

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer!? Sta jij aan het begin van jouw loopbaan of heb jij misschien al enige ervaring? Vind jij het daarnaast belangrijk om jezelf constant te kunnen ontwikkelen en uitdagen? Lees dan snel verder! Voor een vooraanstaand softwarehuis in Nieuwegein ben ik op zoek naar een Junior Software Developer. De eigenaar van het bedrijf is ervan bewust dat je als junior nog een hoop kan leren, waardoor je de eerste maanden veel begeleiding en diverse trainingen krijgt. Daarna ga je samen met je collega's aan zowel kleine als grote projecten werken.

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor een informele club in omgeving Delft zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Als ontwikkelaar kom je terecht op een afdeling van 6 medewerkers. Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Er wordt voornamelijk gewerkt met PHP, Java en

Bekijk vacature »

Pagina: 1 2 volgende »

Simon Kroes

Simon Kroes

15/08/2009 22:36:00
Quote Anchor link
Beste phpers,
Ik heb even een klein vraagje.
Ik heb ontdekt dat ik geen 2 quote's tussen elkaar kan doen kan iemand me misschien vertellen hoe ik dit oplos?

ik heb dit als script nu

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
  $bericht = preg_replace ("/\[quote](.*)\[\/quote\]/","<br /><table cellspacing='0' width='97%' align='center'><tr><td style='background: #E4EAF2; border: 1px dotted #000; border-bottom: 0; border-left: 4px solid #8394B2; color: #000; font-weight: bold; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;'>Quote </td></tr><tr><td style='background: #FAFCFE; border: 1px dotted #000; border-left: 4px solid #8394B2; border-top: 0; color: #465584; padding: 4px; margin: 0 auto 8px auto'>\\1</td></tr></table>",$bericht);

     $bericht = preg_replace ("/\[quote=(.*)](.*)\[\/quote\]/","<br /><table cellspacing='0' width='97%' align='center'><tr><td style='background: #E4EAF2; border: 1px dotted #000; border-bottom: 0; border-left: 4px solid #8394B2; color: #000; font-weight: bold; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;'>Quote: \\1 </td></tr><tr><td style='background: #FAFCFE; border: 1px dotted #000; border-left: 4px solid #8394B2; border-top: 0; color: #465584; padding: 4px; margin: 0 auto 8px auto'>\\2</td></tr></table>",$bericht);


Alvast bedankt
Groeten Nomis
 
PHP hulp

PHP hulp

23/11/2024 17:46:21
 
GaMer B

GaMer B

15/08/2009 22:51:00
Quote Anchor link
Bekijk dit topic even.
 
Simon Kroes

Simon Kroes

15/08/2009 22:56:00
Quote Anchor link
Oke :) Bedankt, alleen als ik hem nu niet sluit(1 quote) dan crasht me hele website...
 
GaMer B

GaMer B

15/08/2009 23:05:00
Quote Anchor link
Je kan ook tags die niet met elkaar matchen verwijderen voordat ze door de parser gaan.
 
Simon Kroes

Simon Kroes

15/08/2009 23:14:00
Quote Anchor link
Ik kan eigenlijk niet bedenken hoe ik dat dan zou moeten doen?
 
Zero XT

Zero XT

16/08/2009 10:55:00
Quote Anchor link
Toevallig dat ik bezig ben om een ubb parser te maken. Wanneer deze klaar is (ik verwacht binnen nu en paar daagjes) zal ik em misschien hier op phphulp zetten
 
Jelmer -

Jelmer -

16/08/2009 11:14:00
Quote Anchor link
Probeer eens (.*?) ipv (.*)

Die ? maakt het verschil tussen greedy (zoveel mogelijk) en non-greedy. Die tweede zal dus ook je eerste eind-quote meenemen in z'n match, op zoek naar de laatste eind-qoute, de eerste stopt al zodra hij de volgende eind-quote tegenkomt.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Simon Kroes

Simon Kroes

16/08/2009 12:38:00
Quote Anchor link
IK heb geprobeert wat je zei Jelmer:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$bericht = preg_replace ("/\[quote](.*?)\[\/quote\]/","<br /><table cellspacing='0' width='97%' align='center'><tr><td style='background: #E4EAF2; border: 1px dotted #000; border-bottom: 0; border-left: 4px solid #8394B2; color: #000; font-weight: bold; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;'>Quote </td></tr><tr><td style='background: #FAFCFE; border: 1px dotted #000; border-left: 4px solid #8394B2; border-top: 0; color: #465584; padding: 4px; margin: 0 auto 8px auto'>\\1</td></tr></table>",$bericht);

     $bericht = preg_replace ("/\[quote=(.*?1)](.*?)\[\/quote\]/","<br /><table cellspacing='0' width='97%' align='center'><tr><td style='background: #E4EAF2; border: 1px dotted #000; border-bottom: 0; border-left: 4px solid #8394B2; color: #000; font-weight: bold; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;'>Quote: \\1 </td></tr><tr><td style='background: #FAFCFE; border: 1px dotted #000; border-left: 4px solid #8394B2; border-top: 0; color: #465584; padding: 4px; margin: 0 auto 8px auto'>\\2</td></tr></table>",$bericht);


alleen het werkt niet.... ik zie nogsteeds 1 quer heb ik iets fout gedaan?
 
GaMer B

GaMer B

16/08/2009 12:39:00
Quote Anchor link
(.*?1) die 1 moet daar weg.
 
Simon Kroes

Simon Kroes

16/08/2009 12:58:00
Quote Anchor link
Oke heb ik gedaan, werkt alleen ook niet want hij kijkt naar de eeste, en daar zit geen 1
maar toch bedankt voor het helpen

dit script gebruik ik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    $bericht
= '[quote]dit is de buitenste quote[quote]dit is de binnenste[/quote][/quote]';

    
      $bericht = preg_replace ("/\[quote](.*?)\[\/quote\]/","<br /><table cellspacing='0' width='97%' align='center'><tr><td style='background: #E4EAF2; border: 1px dotted #000; border-bottom: 0; border-left: 4px solid #8394B2; color: #000; font-weight: bold; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;'>Quote </td></tr><tr><td style='background: #FAFCFE; border: 1px dotted #000; border-left: 4px solid #8394B2; border-top: 0; color: #465584; padding: 4px; margin: 0 auto 8px auto'>\\1</td></tr></table>",$bericht);

     $bericht = preg_replace ("/\[quote=(.*?)](.*?)\[\/quote\]/","<br /><table cellspacing='0' width='97%' align='center'><tr><td style='background: #E4EAF2; border: 1px dotted #000; border-bottom: 0; border-left: 4px solid #8394B2; color: #000; font-weight: bold; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;'>Quote: \\1 </td></tr><tr><td style='background: #FAFCFE; border: 1px dotted #000; border-left: 4px solid #8394B2; border-top: 0; color: #465584; padding: 4px; margin: 0 auto 8px auto'>\\2</td></tr></table>",$bericht);
    echo $bericht;
?>


je kan hem hier zelf bekijkne:
http://habboking.zesnul.nl/paginaadmin/test.php
Gewijzigd op 01/01/1970 01:00:00 door Simon Kroes
 
Jelmer -

Jelmer -

16/08/2009 13:00:00
Quote Anchor link
Ja, dat is recursief, niet een quote achter een quote, maar een quote binnen een quote. Het makkelijkste is om je preg_replace binnen een while-lus te zetten, en net zolang door te gaan met die while-lus zolang $bericht nog verandert. Als $bericht niet meer verandert heb je blijkbaar alle quotes vervangen, en ben je klaar.

Maar hoe dit precies gaat met greedy en non-greedy weet ik niet. Je wilt immers wel hebben dan de buitenste quote alles daarbinnen ook meeneemt, maar je wilt niet dat quote 1 quote 2 (die ernaar komt) ook meeneemt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
[q][q]binnen1[/q]buiten1[/q] [q]buiten2[/q]


edit: Misschien is het het makkelijkst om alles te matchen waarbinnen geen begin- en eind-quote voorkomt, zodat hij van binnenuit begint, en dan langzamerhand alle quotes netjes afwerkt. Iets a la
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
\[quote]([^(?:\[/?quote\])]+?)\[\/quote\]
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Simon Kroes

Simon Kroes

16/08/2009 13:08:00
Quote Anchor link
En hoe zou ik die while lus dan moeten maken?

edit:
oke nu kom ik er helemaal niet meer uit
Gewijzigd op 01/01/1970 01:00:00 door Simon Kroes
 
Jelmer -

Jelmer -

16/08/2009 13:28:00
Quote Anchor link
Ik zie net dat preg_replace ook een $count variabele kan gebruiken. Lekker makkelijk:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
do {
    $bericht = preg_replace('...', '...', $bericht, -1, $count);
}
while($count > 0);
?>

$count bevat nadat preg_replace is uitgevoerd het aantal quotes dat is vervangen per keer ($count wordt by reference meegegeven, zie de handleiding van preg_replace) en zolang dat aantal groter is dan 0 gaan we door.
 
Dos Moonen

Dos Moonen

16/08/2009 15:17:00
Quote Anchor link
Dit werkt recursief:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function makeQuote($tekst)
{


    $regex = '#\[quote(?:\h*=\h*(?|&quot;(.*?)&quot;|&\#039;(.*?)&\#039;|([^][=\s]+)))?]'.
             '((?:[^[]|\[(?!/quote]|quote(?:\h*=\h*(?|&quot;(.*?)&quot;|&\#039;(.*?)&\#039;|([^][=\s]+)))?])|(?R))+)'.
             '\[/quote]#';

    if (is_array($tekst)) {
        $tekst = '<fieldset style="background-color:#FFF; width:95%;">
                    <legend style="background-color:#FFF;">Quote'
.(empty($tekst[1]) ? '' : ': '.$tekst[1]).'</legend><p>'.$tekst[2].'</p></fieldset>';
    }


    return preg_replace_callback($regex, 'makeQuote', $tekst);
}[
/code]
Gewijzigd op 01/01/1970 01:00:00 door Dos Moonen
 
Matthias R

Matthias R

16/08/2009 15:19:00
Quote Anchor link
kijk een snaar dit topic
 
Simon Kroes

Simon Kroes

16/08/2009 18:56:00
Quote Anchor link
Wauw, Jelmer, Je bent een schat!
Het is gelukt.

Iedereen anders ook natuurlijk bedankt:D maar die van Jelmer gebruik ik:)

Edit:
Als ik enters gebruik zoals zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
       $bericht = '[quote=Nomis3]
            [quote]
                [quote]dit is de buitenste quote met naam
                    [quote]dit is de buitenste quote met naam
                        [quote]dit is de buitenste quote met naam
                            [quote]dit is de buitenste quote met naam
                                [quote]dit is de buitenste quote met naam
                                    [quote]dit is de buitenste quote met naam
                                        [quote]dit is de buitenste quote met naam
                                            [quote]dit is de buitenste quote met naam[/quote]
                                        [/quote]
                                    [/quote]
                                [/quote]
                            [/quote]
                        [/quote]
                    [/quote]
                [/quote]dit is de buitenste quote met naam
            [/quote]
          [/quote]';

dan krijg ik dit effect: weet iemand misschien hoe dat komt??
http://habboking.zesnul.nl/paginaadmin/test.php


tot zo ver heb ik dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
        $bericht
= '[quote=Nomis3]
            [quote]
                [quote]dit is de buitenste quote met naam
                    [quote]dit is de buitenste quote met naam
                        [quote]dit is de buitenste quote met naam
                            [quote]dit is de buitenste quote met naam
                                [quote]dit is de buitenste quote met naam
                                    [quote]dit is de buitenste quote met naam
                                        [quote]dit is de buitenste quote met naam
                                            [quote]dit is de buitenste quote met naam[/quote]
                                        [/quote]
                                    [/quote]
                                [/quote]
                            [/quote]
                        [/quote]
                    [/quote]
                [/quote]dit is de buitenste quote met naam
            [/quote]
          [/quote]'
;

do {
    $bericht = s_replace ("/\[quote](.*?)\[\/quote\]/","<table cellspacing='0' width='97%' align='center'><tr><td style='background: #E4EAF2; border: 1px dotted #000; border-bottom: 0; border-left: 4px solid #8394B2; color: #000; font-weight: bold; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;' align='left'>Quote </td></tr><tr><td style='background: #FAFCFE; border: 1px dotted #000; border-left: 4px solid #8394B2; border-top: 0; color: #465584; padding: 4px; margin: 0 auto 8px auto' align='left'>\\1</td></tr></table><br />", $bericht, -1, $count);
}
while($count > 0);
 
 do {
    $bericht = preg_replace ("/\[quote=(.*?)](.*?)\[\/quote\]/","<table cellspacing='0' width='97%' align='center'><tr><td style='background: #E4EAF2; border: 1px dotted #000; border-bottom: 0; border-left: 4px solid #8394B2; color: #000; font-weight: bold; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;' align='left'>Quote: \\1 </td></tr><tr><td style='background: #FAFCFE; border: 1px dotted #000; border-left: 4px solid #8394B2; border-top: 0; color: #465584; padding: 4px; margin: 0 auto 8px auto' align='left'>\\2</td></tr></table><br />", $bericht, -1, $count);
}
while($count > 0);
    echo $bericht;
?>
Gewijzigd op 01/01/1970 01:00:00 door Simon Kroes
 
Jelmer -

Jelmer -

16/08/2009 21:06:00
Quote Anchor link
Dat gaat niet helemaal werken wanneer je beide notaties met elkaar gaat mixen. Daarnaast heb je een probleem wanneer je twee quotes op hetzelfde niveau hebt zitten ([q][/q][q][/q] ipv [q][q][/q][/q])

Daar allemaal rekening mee gehouden, kom ik tot dit (en dit is echt een monster, en niet mooi, en zo zou ik het zelf niet willen doen, maar het werkt wel)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
function _quote_callback($matches)
{

    $quote = '<blockquote>';
    
    if($matches['bron'] != '')
        $quote .= '<span class="bron">Van ' . $matches['bron'] . ':</span><br>';
    
    $quote .= $matches['inhoud'];
    
    $quote .= '</blockquote>';
    
    return $quote;
}


$bericht = '
[quote=Nomis3]
  [quote]
      [quote]dit is de buitenste quote met naam
          [quote]dit is de buitenste quote met naam
              [quote=van hem]dit is de buitenste quote met naam
                  [quote=van ONSSSS]dit is de buitenste quote met naam
                      [quote=van mij]dit is de buitenste quote met naam
                          [quote]dit is de buitenste quote met naam
                              [quote]dit is de buitenste quote met naam
                                  [quote]dit is de buitenste quote met naam[/quote]
                              [/quote]
                          [/quote]
                      [/quote]
                  [/quote]
              [/quote]
          [/quote]
      [/quote]dit is de buitenste quote met naam
      maar nu komt er nog een quote
      [quote][quote]spannend he?[/quote], zei hij[/quote]
  [/quote]
[/quote]'
;

do {
    /* preg_replace_callback, omdat <bron> optioneel is. Ik weet niet hoe je een
    soort if-constructie in het tweede argument van preg_replace bouwt, daarom
    doe ik dat nu in een gewone PHP functie */

    $bericht = preg_replace_callback("{\[quote(?:=(?<bron>[^\]]+?))?\](?<inhoud>(?:(?!\[/?quote(?:=.+?)?\]).)+?)\[/quote\]}is", '_quote_callback', $bericht, -1, $count);

    /* Dit kan weg, was alleen even handig om te zien welke volgorde er precies gebruikt wordt */
    echo "\n\n---------------------------------\n\n";
    
    echo $bericht;
    
    usleep(500000);
    
}
while($count > 0);
?>

Ik heb preg_replace_callback gebruikt om de matches op te maken (je moet er zelf even je tabel-structuur in zetten als je dat wilt) maar dat is nodig omdat ik niet zou weten hoe je anders één vervanger voor twee verschillende quotes (met bron, zonder bron) kunt gebruiken.

(Voor wie het interesseert, een echt mooie UBB parser zou eerst $bericht volledig parsen en omzetten in een boom, en op basis van die boom weer HTML genereren. In weze heb je dan gewoon je eigen HTML parser geschreven die er een DOM tree van bouwt, maar dan voor UBB. Ik denk wel dat dat veiliger is trouwens, en veel meer mogelijkheden biedt voor foutcorrectie en andere slimme trucjes)

Edit: newlines matchen met de punt doe je trouwens door s als modifier (na je laatste slash) op te geven.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Dos Moonen

Dos Moonen

17/08/2009 00:38:00
Quote Anchor link
De functie die ik eerder gaf doet presies wat je wilt.
Het is naar mijn menig een stuk mooier dat de code van Jelmer (niets persoonlijks), maar nog altijd niet zo fijn als een stack-based ubb parser.

Een test waarbij de inhoud van $bericht ietsjes anders is dan die uit Jelmers code. (er zijn quotes en enters toegevoegd)
De fieldset veranderen naar een tabel zou niet moeilijk moeten zijn.
Ook werkt de regexp al recursief door "(?R)".
De htmlspecialchars zit er in omdat je pas ubb tags gaat parsen nadat je alle html onschadelijk hebt gemaakt en dus (waarschijnlijk) de html varianten van quotes in de regexp moet gebruiken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php

$bericht
= '
[quote=Nomis3]
  [quote]
      [quote]dit is de buitenste quote met naam
          [quote]dit is de buitenste quote met naam
              [quote=\'van hem\']dit is de buitenste quote met naam
                  [quote="van ONSSSS"]dit is de buitenste quote met naam
                      [quote="van mij"]dit is de buitenste quote met naam
                          [quote]dit is de buitenste quote met naam
                              [quote]dit is de buitenste quote met naam
                                  [quote]dit
                                  is
                                  de
                                  buitenste
                                  quote
                                  met
                                  naam[/quote]
                              [/quote]
                          [/quote]
                      [/quote]
                  [/quote]
              [/quote]
          [/quote]
      [/quote]dit is de buitenste quote met naam
      maar nu komt er nog een quote
      [quote][quote]spannend he?[/quote], zei hij[/quote]
  [/quote]
[/quote]'
;

function
makeQuote($tekst)
{


    $regex = '#\[quote(?:\h*=\h*(?|&quot;(.*?)&quot;|&\#039;(.*?)&\#039;|([^][=\s]+)))?]'.
             '((?:[^[]|\[(?!/quote]|quote(?:\h*=\h*(?|&quot;(.*?)&quot;|&\#039;(.*?)&\#039;|([^][=\s]+)))?])|(?R))+)'.
             '\[/quote]#';

    if (is_array($tekst)) {
        $tekst = '<fieldset style="background-color:#FFF; width:95%;">
                    <legend style="background-color:#FFF;">Quote'
.(empty($tekst[1]) ? '' : ': '.$tekst[1]).'</legend><p>'.$tekst[2].'</p></fieldset>';
    }


    return preg_replace_callback($regex, 'makeQuote', $tekst);
}


echo makeQuote(nl2br(htmlspecialchars($bericht, ENT_QUOTES)));

?>
 
Simon Kroes

Simon Kroes

17/08/2009 11:16:00
Quote Anchor link
Het werkt nu allemaal:D

Bedankt iedereen!
 
Lode

Lode

17/08/2009 11:55:00
Quote Anchor link
leuke (recursieve regex) code!

Alleen waar je hierna heengaat is een stack based UBB parser, en daar zijn er wel van te vinden.
En regex master Richard heeft zijn versie hier ook gepost volgens mij...
 
Jelmer -

Jelmer -

17/08/2009 13:02:00
Quote Anchor link
?R voor recursie, die kende ik nog niet. Prima oplossing voor het probleem wat ik met die while-lus wou oplossen.

Heb ik ook weer wat geleerd, bedankt :)
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.