meerdere ubb code's

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

Back end developer

Functie Jij als full stack ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. De technische uitdaging momenteel is dat

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Wij zijn voor een leuke opdrachtgever in omgeving Naaldwijk op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Wij zoeken iemand die breed inzetbaar is en die aan veel verschillende applicaties wilt werken. Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind

Bekijk vacature »

Medior C# Developer

Samen met het development team zorg je ervoor dat alle systemen achter de schermen vlekkeloos werken. Wat doe je als Medior C# Developer bij Coolblue? Als C# developer doe je regelmatig mee aan brainstormsessies over user experience, data en task flow met de UX Designer, Product Owner en Data Scientist in je team. Daarnaast schrijf je op zichzelf staande, consistente en testbare code die goed onderhoudbaar en toekomstbestendig is. Ook C# Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Werken met verschillende soorten data-opslag, zoals Oracle of AWS. Problemen oplossen

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Frontend Developer

Dit ga je doen Door ontwikkelen van het online platform Deel uitmaken van verschillende ontwikkelteams Meedenken over UI/UX vraagstukken Uitdragen van Front-end binnen de organisatie Hier ga je werken Deze organisatie, gevestigd in de omgeving van Amsterdam, is een grote onderwijs instelling met meerdere vestigingen en een groot aantal studenten. Zo telt deze organisatie +/- 35.000 gebruikers. Bij deze organisatie staat jouw ontwikkeling centraal en is er veel ruimte voor eigen initiatieven. In samenwerking met jouw team ga jij de online omgeving verder ontwikkelen. In de rol van Front end Developer zal jij 50% van jouw tijd werken in het

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving Voor de gemeente Amsterdam zijn wij op zoek naar een softwareontwikkelaar Cleopatra. De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van brom- en snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie. Functie

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

Bekijk vacature »

Front end developer binnen de consultancy

Functie Je komt in een team met ambitieuze developers die de passie voor Front-End met jou delen. Samen ga je aan de slag met leuke en leerzame opdrachten. Het team heeft een eigen budget en financiën en zij bepalen zelf hoe dat besteed en investeert wordt. Je gebruikt tools als JavaScript, Node.js, React, Angular, Typescript en Vue.js wanneer je werkt aan de opdrachten. Daarnaast zul je veel leren van je collega’s en gezamenlijk een leuke tijd doorbrengen tijdens activiteiten zoals wintersport, hackatons en conferentiebezoeken. Je krijgt niet alleen de mogelijkheid Front-End te ontwikkelen, maar ook vooral jezelf. Dit kan behaald

Bekijk vacature »

C# .NET Developer IoT SQL Server

Samengevat: Wij ontwikkelen innovatieve oplossingen om apparaten en bezittingen op een eenvoudige en flexibele manier te beveiligen. Ben jij een C# .NET developer? Heb jij ervaring met C# en SQL server? Vaste baan: C# .NET Developer IoT HBO €3.200 - €4.500 Deze werkgever is gespecialiseerd in hoogwaardige GSM/GPRS alarm- en telemetrietechnologie. Met een eigen productlijn en klantspecifieke ontwikkelingen biedt deze werkgever oplossingen om op afstand te meten, melden, loggen en aansturen, ook op plaatsen zonder stroomvoorziening. Onze producten worden gekarakteriseerd door flexibiliteit in de configuratie, betrouwbaarheid en een extreem laag stroomverbruik. Zij werken voor MKB klanten. Deze werkgever heeft veel

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 19:42:17
 
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.