Content parsen preg_replace, raad ermee?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Trainee pega developer

Wil jij een mooie stap maken in jouw carrière? Mooi! Bij De Mandemakers Groep haal je binnen 6 maanden je CSA- en CSSA-certificaten, waarna jij aan de slag kan als Pega-developer in ons IT-team. Achter de schermen zorg jij ervoor dat collega’s efficiënt werken en klanten iedere dag beter geholpen worden. Wil jij daaraan bijdragen? En jouw ICT-skills ontwikkelen? Lees dan snel verder en solliciteer vandaag nog als trainee Pega-developer. Wat ga je doen? Als trainee Pega developer leiden wij je op tot gecertificeerd software developer voor het low-code platform PegaSystems. In de training ben je verantwoordelijk voor een te

Bekijk vacature »

Ervaren Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als ervaren developer zul je hiernaast ook andere developers assisteren en waar nodig de leiding nemen in het project.

Bekijk vacature »

.NET Developer Microservices

Dit ga je doen Je taken zullen voornamelijk bestaan uit: Het ontwikkelen van software, inclusief vormgeving, implementaties, integraties en (automatisch) testen (.NET, C#, Azure, Docker, Microservices, Angular); Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Het uitvoeren van risico analyses; Een bijdrage leveren aan het continuous quality improvement process. Hier ga je werken Dat kanker een verschrikkelijke ziekte is die de wereld uit geholpen moet worden, is duidelijk. Binnen deze Gelderse organisatie die duizenden ziekenhuizen van producten voorziet, proberen ze daar via technische innovaties aan bij te dragen. Samen met 10 collega .NET developers

Bekijk vacature »

Senior Software developer PHP

Functie Jij als senior PHP ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 developers binnen onze organisatie Jij gaat de brug zijn tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je je taken op voor de dag. Een greep van jouw taken zijn: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden met Security & Privacy Eisen • Minimaal 4

Bekijk vacature »

Software Developer

Functie omschrijving Veel begeleiding en de kans om je verder te ontwikkelen als software developer. Dat kunnen wij jou bieden bij deelname aan deze leuke traineeship. Je krijgt een mentor toegewezen die jou alle kneepjes van het vak leert. Heb jij al wat ervaring als software developer? Daar worden wij heel blij van! Lees snel verder! Bedrijfsprofiel Als software developer neem je deel aan een trainings programma in de omgeving van Haarlem waar je persoonlijk wordt begeleidt, zodat je alle kneepjes van het vak leert. Aan de hand van jouw kennis en ervaring krijg je een persoonlijk opleidingstraject. Je gaat

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 »

Software Developer PHP

Functie omschrijving We are looking for a dutch native speaker Voor een opdrachtgever in de regio van Geldrop ben ik op zoek naar een Software Developer PHP. Jij krijgt een rol met veel verantwoordelijkheid in een groeiende organisatie. In deze functie werkt je voornamelijk remote en op een vast moment kom je met het team samen, om samen te werken en nieuwe doelen te bepalen. Wat ga je doen? Je wordt verantwoordelijk voor de interne applicatie; Je zorgt voor de doorontwikkeling van de applicatie: zowel back-end, front-end; De basis van het werk betreft front-end technieken; Periodiek bepaal je samen met

Bekijk vacature »

.NET Software Developer

Dit ga je doen Als .NET Software Developer zul jij je voornamelijk bezig houden met: Het van scratch af aan bouwen van applicaties (.NET, C#, Bootstrap, KnockoutJs en WebAPI2); Het testen van jouw code d.m.v. het uitvoeren van unittesten; Het oplossen van bugs in de code; Het onderhouden van contact met collega's betreffende de door jouw ontwikkelde applicaties; Het verbeteren en doorontwikkelen van maatwerkapplicaties. Hier ga je werken Jij gaat aan de slag als .NET Software Developer en gaat je focussen op het bedenken, ontwikkelen en testen van maatwerkapplicaties in voornamelijk C#. Dit ga je doen bij een grote, internationale

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 »

Back end developer Digital Agency

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Digitale Tovenaar Gezocht: Junior Low-code/No-code

Bedrijfsomschrijving Duik mee in een wereld vol innovatieve avonturen waar gegevens en technologie een magische symbiose aangaan! Al meer dan twee decennia lang zijn we de tovenaars achter de schermen die oplossingen creëren voor de meest complexe klantcontactvraagstukken en datagedreven software-uitdagingen. Bij ons draait het om de kracht van samenwerking en groei. We zijn een hechte vriendengroep die samen bergen verzet om elkaar én onze klanten te laten schitteren. Jouw succes is ons succes en we streven ernaar om elkaar naar nieuwe hoogten te tillen, niet voor even, maar voor altijd. We willen dat jij je helemaal thuis voelt in

Bekijk vacature »

Full stack developer Node.js, React Remote

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

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 »

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 »

Java Developer

Functieomschrijving Are you an experienced Java Developer who wants to be challenged? Then this is your job! As a Java Developer, you are co-responsible for building custom applications within our extensive IT landscape. Development takes place on both the back-end side (Spring/JEE). Together with the IT department, you are responsible for the daily adjustments and expansions of our IT systems. In addition, you will work in small scrum teams using the Agile methodologies. Besides the realization of our in-house systems, you are responsible for the roll-out of the application (version) as well as the operational support after going live. Team

Bekijk vacature »
Write Down

Write Down

15/01/2011 18:42:13
Quote Anchor link
Hallo,

Ik ben momenteel een template-parser aan het maken. Lekker eenvoudig, maar handig :-). Alles is in OOP geschreven, maar het stukje waar ik nu aan bezig ben, wil ik eerst toch even met wat procedurele code uittesten. Tot daar het koffiepraatje.

Als input heb ik bv. het volgende: (afkomstig van een TPL-bestand)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<h1>{$TITLE}</h1>
<h2>{$SUBTITLE}</h2>

<p class="headermenu">
   <a href="#">Testje1</a>
   <a href="#">Testje2</a>
</p>


{$TITLE}, {$SUBITLTE} en eigenlijk alles wat de syntaxis {$[A-Z]} zet heeft moet vervangen worden. De te vervangen deeltjes worden uitgespuwd onder de vorm van een array. Bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Array ( [{$TITLE}] => phpHulp.nl [{$SUBTITLE}] => phpHulp Forum )


De parser zou dit dus moeten omzetten in het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<h1>phpHulp.nl</h1>
<h2>phpHulp Forum}</h2>

<p class="headermenu">
   <a href="#">Testje1</a>
   <a href="#">Testje2</a>
</p>


Ik ga er vanuit dat ik dit met de preg_replace functie moet kunnen fixen.

Ik dacht iets in de aard van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
preg_replace('/\{\$([A-Z]\}', '$replacement', $content);
?>


Echter krijg ik hiermee niet het gewenste resultaat.

Iets wat ik naar de toekomst ook wil gaan doen is {$[A-Z]#[0-9]} gaan replacen. Maar ik denk dat ik al best eerst is naar de "gewone" replace kijk :-).

Alvast bedankt (al is het maar dat je het gelezen hebt!)
 
PHP hulp

PHP hulp

29/03/2024 12:07:28
 
Noppes Homeland

Noppes Homeland

15/01/2011 18:56:59
Quote Anchor link
Hoe zat het ook weer met quoten van variabelen?????!!!!!!!!!!!
Gewijzigd op 15/01/2011 18:57:17 door Noppes Homeland
 
Jelmer -

Jelmer -

15/01/2011 19:13:35
Quote Anchor link
Ik denk dat preg_replace_callback het makkelijkst is, (je kan ook preg_replace met de e-modifier gebruiken, maar weet waar je mee bezig bent dan!)

Anyway, omdat ik dat laatste nooit doe, heb ik het voor de grap nu wel eens gedaan:
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
<?php

$content
= <<<'HTML'
<h1>{$TITLE}</h1>
<
h2>{$SUBTITLE}</h2>

<
p class="headermenu">
   <
a href="#">Testje1</a>
   <
a href="#">Testje2</a>
<
/p>
HTML;

$title = 'PHPhulp';
$subtitle = 'Geen idee';

echo preg_replace('/{\$([A-Z]+)}/e', '\${strtolower("$1")}', $content);
?>

de e-modifier zorgt ervoor dat je replace-stukje van preg-replace wordt uitgevoerd alsof het PHP is. $1 wordt vervangen met de variabelenaam, dus ${strtolower("TITLE")} wordt uitgevoerd, wat weer hetzelfde is uiteindelijk als $title.

Ter vergelijking, als je het (mooi?) wilt doen met preg_replace_callback:
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
<?php

class Template
{
    private $template;
    
    private $data = array();
    
    public function __construct($template)
    {

        $this->template = $template;
    }

    
    public function set($name, $value)
    {

        $this->data[$name] = $value;
    }

    
    public function render()
    {

        return preg_replace_callback('/{\$([A-Z]+)}/', array($this, 'replaceVariable'), $this->template);
    }

    
    private function replaceVariable($match)
    {

        return $this->data[strtolower($match[1])];
    }
}


$content = <<<'HTML'
<h1>{$TITLE}</h1>
<
h2>{$SUBTITLE}</h2>

<
p class="headermenu">
   <
a href="#">Testje1</a>
   <
a href="#">Testje2</a>
<
/p>
HTML;

$template = new Template($content);
$template->set('title', 'PHPhulp');
$template->set('subtitle', 'Geen idee');
echo $template->render();
?>

Ik heb de class wel nodig omdat ik ergens moet opslaan wat die variabelen voor waarde moeten krijgen, en ik die niet mee kan geven aan de functie zelf (want ik kan niet regelen welke argumenten replaceVariable meekrijgt) Of je moet globals daarvoor gebruiken, of closures als je PHP 5.3 hebt.
Gewijzigd op 15/01/2011 19:19:29 door Jelmer -
 

15/01/2011 19:28:51
Quote Anchor link
Pas inderdaad écht heel erg op met de e modifier. Phphulp is in de bèta gehackt doordat in een reguliere expressie de e modifier werd gebruikt.
 
Write Down

Write Down

15/01/2011 19:39:26
Quote Anchor link
@Jelmer rrrr & Karl Karl
Ik ga het deze avond is rustig bekijken.

@Noppes Homeland
Ik begrijp jet reactie, maar ze is offtopic. Als je even ziet, staat er ook geen komma's. (syntaxis zoals print_r het zou uitspuwen) Het is overigens een voorbeeld, geen echte code.
 

15/01/2011 19:41:39
Quote Anchor link
Ik vind het overigs persoonlijk heel mooi om met xml te werken, daarmee kan je ook heel krachtig werken. (Maar ik heb ook een erg grote liefde voor xml.)
 
Write Down

Write Down

15/01/2011 19:54:50
Quote Anchor link
@Karl Karl,
Kan ik inkomen, maar ik ga deze parser niet los gebruiken. Komt in een groter project. En als ik dan met XML dien te werken, maag ik het mezelf alleen maar moeilijker.
 
Write Down

Write Down

18/01/2011 19:46:52
Quote Anchor link
Hallo,

Ik ben zonet weer aan het knutselen gegaan. Ik begrijp toch echter niet zo goed deze functie.

Ben ik werkelijk verplicht de functie "te voederen" met array($this, ...)?

Ik zie niet zo in hoe dit op een nettere manier kan. Of is dit naar jullie mening wel net?
 
Jelmer -

Jelmer -

18/01/2011 20:54:43
 
Bas Cost Budde

Bas Cost Budde

18/01/2011 21:29:31
Quote Anchor link
Ik vind dat wel netjes hoor, dat je een methode van het huidige object kunt aanreiken als callback. Dat dat dan als array moet, okee.
 
Write Down

Write Down

18/01/2011 21:31:32
Quote Anchor link
@Jelmer, bedankt. Al heb ik er op zich niet enorm veel aan.

@Bas, niet de array is het probleem, maar ik vind de hele "$this" meegeven nogal vaag.
 
Bas Cost Budde

Bas Cost Budde

18/01/2011 21:37:20
Quote Anchor link
ohja? Liever het hele object (dat is maar 1 pointer) dan een stukje ervan. Ohnee dat is Java-denken :)

Het gaat om de combinatie van functienaam en object-waarin-de-functie-leeft. Vraag ik mij uit het hoofd even af of je een statische methode ook op die manier aanroept... ohnee dat gaat met klassenaam natuurlijk ipv $this
 



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.