Content parsen preg_replace, raad ermee?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Midlevel/Sr Developer bij leverancier communicatie

Een van de grootste leveranciers van communicatieplatformen aan bijv. internationale telecompartijen is op zoek naar een nieuwe teammember: een ervaren Midlevel tot Senior .Net Developer. De organisatie werkt met de nieuwste en uitsluitend Microsoft .Net technologieën (.Net Core, Azure) en producten als Docker en Kubernetes. Zij werken in Scrum sprints met teams waar samenwerking en (persoonlijke)groei hoog in het vaandel staat. Ze zijn op zoek naar gepassioneerde .Net Developers, waarbij ervaring met bovengenoemde technologieën geen harde eis maar een pré is. Genoeg ruimte dus om ervaring hierin op te doen. Drie jaar geleden hebben zij naast hun huidige applicatie een

Bekijk vacature »

Full Stack Java Developer Graduate Program - Exper

Via Experis Academy krijg je een unieke kans om de in de branche gewilde expertise op te doen die jou tot een gewilde Full Stack Java Developer met een frontend-specialisatie maken. Het programma duurt 21 maanden en eindigt met een vaste baan bij een van onze vele, boeiende klanten, of je blijft bij ons (Experis) werken. Ons programma tot Java Developer Experis Academy start met een op maat gemaakte cursus die drie maanden duurt. Gedurende deze maanden komen theorie, praktijk en Java-certificeringen aan bod. Hierbij is het onderwijsprogramma gebaseerd op de principes als versnelde training en flipped classroom. De volgende

Bekijk vacature »

BI Developer @ Utrecht

2021-07-27 iSense BI Developer Hou je van datagedreven organisaties? Ben je op zoek naar een uitdaging waarbij de nieuwste BI-tools en -technieken worden gebruikt? Wil je verantwoordelijkheid nemen in verschillende digitaal transformatieprojecten? ISPA50581 Organisatie Je gaat werken bij een wereldwijde financiële organisatie met een hoofdkantoor in Nederland. Je maakt deel uit van een van de belangrijkste teams binnen de organisatie voor het creëren van bruikbare inzichten uit data. De organisatie hecht veel belang aan de samenwerkings- en communicatiecultuur tussen verschillende ontwikkelingsteams. Je gaat werken in een team dat samenwerkt om verschillende bedrijfsdomeinen te helpen door dataproducten te maken. Deze omgeving

Bekijk vacature »

XSLT / Xquery Ontwikkelaar @ Den Haag

2021-06-24 iSense XSLT / Xquery Ontwikkelaar Heb jij ervaring met het ontwikkelen en beheren van Java applicaties? Heb je daarbij ook ervaring met XSLT? Dan is dit mogelijk jouw nieuwe opdracht! ISAC49772 Nieuw Organisatie KOOP ontwikkelt en beheert momenteel onder meer de volgende producten: 1. Wet- en regelgevingsportalen (o.a. Wetten.nl en CVDR ). Hier kunnen gebruikers op basis van trefwoorden en andere criteria wetten en regelgevingen inzichtelijk krijgen; 2. PUC Open Data platform (o.a. puc.overheid.nl en afgeleide producten en interne kennisbanken). Hier publiceren overheidsorganisaties zelf hun uitvoeringsinformatie die publiekelijk beschikbaar is, zoals beleid, handboeken, werkinstructies en berichten. 3. Wettenpocket+ (o.a.

Bekijk vacature »

Senior C# Developer (NL)

Senior C# Developer (NL) Den Haag HBO/WO IT Professional "Als Senior C# Developer impact maken op de groeiende E-commerce markt met onze logistieke software. Je doet dit door complexe bedrijfskritische logistieke business processen te vertalen naar de ontwikkeling en uitbreiding van onze Cloud IT-platformen en software oplossingen in C# en AWS" Wat ga je doen? PostNL is becoming a postal tech company. Als Senior C# Developer ben je onderdeel van een multidisciplinair Business-IT-team bestaande uit onder andere een Lead Engineer, Developers en Solution Consultants. Samen zijn jullie verantwoordelijk voor het bouwen aan onderdelen uit onze logistieke software omgeving. Binnen het

Bekijk vacature »

C#/Azure developer

Op zoek naar leuke collega's waarmee je kunt lachen, gave projecten en een ambitieuze werkgever die heel goed voor je zorgt? Aangenaam: Profit4Cloud! Wij zijn nu met 55 collega's en werken sinds 2015 vanuit 5 vestigingen aan mooie projecten met een fijne groep collega's die allemaal maar één ding willen: mooie en slimme software-oplossingen ontwikkelen met de nieuwste technieken. We zijn goed bezig en zijn daarom op zoek naar versterking: Medior C#/Azure developers. Ben jij de Medior C# developer die enthousiast wordt van mooie projecten waar binnen jij een belangrijke rol speelt? Dan is Profit4Cloud jouw 'place-to-be'! Als Medior C#

Bekijk vacature »

Business Intelligence Developer

Role: Business Intelligence Developer (Part time – 2/3 days per week) Location: The Netherlands (Fully Remote) Salary: €42,000 My client, one of the largest retail chains in the Netherlands with 200+ stores is seeking a talented BI Developer to join their team on a part time basis This role is a unique opportunity to maintain the environment and work within an exciting, fast growing organisation. Benefits include: Competitive pay scales Extremely generous holiday entitlement & Bonus Further salary progression based on performance. Flexible working! Pension plan Essential Skills: 3+ years’ experience with Teradata End to end knowledge of business intelligence

Bekijk vacature »

Experienced GPGPU Developer (CUDA/OpenCL/C++)

Experienced GPGPU Developer (CUDA/OpenCL/C++) Trinamics is looking for an experiencedSoftware Engineer with experience in parallel programming languages like CUDA, OpenCL and C++. The business is located in the Eindhoven region of the Netherlands and creates high-endsolutions in the form of sensor hardware and software design and new sensor fusion concepts. They do this by developing really realistic Physics Based Simulations.So are you looking for a challenging job, please read the details below! About the vacancy You will be part of an enthusiastic multi-disciplinary team and we are looking for someone with experience in GPU & Visualization Development to join an

Bekijk vacature »

Sr PHP Developer Symfony / Frameworks

Bij welk bedrijf je gaat werken: Ons bedrijf is een specialist in het fintech domein. Wil je aan de slag als PHP Developer? Heb je ervaring met PHP, Symfony en GIT? Vaste baan: Sr PHP Developer Symfony GIT 3.200 - 4.500 Senior PHP Developer Ons bedrijf specialiseert zich o.a. in het fintech domein. Wij helpen o.a. softwareleveranciers middels ons platform waarop wij koppelingen aanbieden. Daarnaast helpen wij bedrijven met het koppelen van softwareapplicaties. Variërend van kassasystemen tot boekhoudpakketten. Door de koppeling van diverse softwareapplicaties vervangen we handmatige taken door een optimaal digitaal proces. Dit maakt ons bedrijf tot een veelzijdig

Bekijk vacature »

Medior Backend Webdeveloper HBO / HTML CSS

Over de werkgever: Wij zijn een Fullservice Internetbureau. Bouw jij nieuwe platforms en websites? Heb jij ervaring met Magento en WordPress? Vaste baan: Medior Backend Webdeveloper HBO PHP 3.200 - 4.200 Medior Backend Webdeveloper Wij zijn een Fullservice Internetbureau. Wij maken Websites, Apps en Portals, en zijn actief op gebied van E-commerce. We hebben ook veel aandacht voor websiteoptimalisatie (SEA en SEO), en systeemintegratie, en maken datakoppelingen met veel verschillende systemen. Bij ons werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Daarnaast staan

Bekijk vacature »

C# .NET Software Ontwikkelaar / HBO

Wie wordt jouw werkgever?: Wij zijn een softwarebedrijf. Ben jij een ervaren software developer? Heb jij ervaring met web development? Vaste baan: C# .NET Software Ontwikkelaar HBO 3.200 - 4.800 Software Developer Wij zijn een vooruitstrevend bedrijf dat verschillende online softwareprogramma’s aanbiedt. We maken hierbij gebruik van de allernieuwste webtechnieken. Wij zijn een veelzijdige organisatie. Je werkt voor onze eigen IT organisatie. We werken met moderne technologie en staan open voor innovatie. Je komt in een ambitieus team terecht. Samen maken we met creatieve oplossingen onze websites nog beter. Heb jij zin in een nieuwe uitdaging in een prettige werkomgeving?

Bekijk vacature »

Java developer (medior & senior)

Op zoek naar leuke collega's waarmee je kunt lachen, gave projecten en een ambitieuze werkgever die heel goed voor je zorgt? Aangenaam: Profit4Cloud! Wij zijn nu met 55 collega's en werken sinds 2015 vanuit 5 vestigingen aan mooie projecten met een fijne groep collega's die allemaal maar één ding willen: mooie en slimme software-oplossingen ontwikkelen met de nieuwste technieken. We zijn goed bezig en zijn daarom op zoek naar versterking: Java Software Engineers met ervaring in back-end en front-end software ontwikkeling. Ben jij de Java Software Engineer die enthousiast wordt van mooie projecten waar binnen jij een belangrijke rol speelt?

Bekijk vacature »

Datawarehouse specialist / ETL Ontwikkelaar @ Rott

2021-04-12 iSense Datawarehouse specialist / ETL Ontwikkelaar Datawarehouse ontwikkelaar / ETL ontwikkelaar / DWH ISRA49558 Nieuw Organisatie Onze klant is een semi overheidsinstelling. Ze zijn bezig met het bouwen van een nieuwe BI omgeving. Ze hebben onderzocht hoe het datalandschap en de informatievoorziening geprofessionaliseerd kan worden. Als DWH Ontwikkelaar kun jij hier een belangrijk rol in gaan spelen over hoe je het verder gaat uitvoeren. Het is een informele organisatie met een goede werksfeer. De mensen die er werken zijn ambitieus en werken met de nieuwste technieken. Ben jij toe aan een nieuwe uitdaging als datawarehouse ontwikkelaar waar jij kunt

Bekijk vacature »

Full Stack Developer / C# Javascript

Over de werkgever: Wij ontwikkelen software voor handelsbedrijven. Ben jij een ervaren full stack developer? Heb jij ervaring met C# en JavaScript? Vaste baan: Full Stack Developer C# Javascript 3.000 - 4.500 Full Stack Developer Wij zijn gespecialiseerd in het bieden van softwareoplossingen op maat en dus volledig ingericht naar uw bedrijfsspecifieke processen. Wij leveren dit aan klanten in de olie & gas industrie. Bij ons werk je aan onze eigen bedrijfsapplicaties. Bovendien ontwikkel je met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Wij staan open voor elke nieuwe trend, onze

Bekijk vacature »

Junior Fullstack ontwikkelaar Vue.js/C#/.NET Core

Voor een grote financiele instelling zoekt Yacht een Junior Fullstack ontwikkelaar Vue.js/C#/.NET Core Zorg jij ervoor dat 450.000 klanten zelf hun hypotheek kunnen regelen? Werk jij graag samen met een enthousiast en gedreven team van engineers? Verbeter jij met je team continu de ontwikkeling van hypotheeksoftware? Dan zijn we op zoek naar jou! Wij zijn de digitale motor van Hypotheken! Wij zijn trots dat we met onze afdeling de afstand tussen de bank op het gebied van hypotheken en de klant verkleinen. Zo hebben we onder andere digitaal ondertekenen mogelijk gemaakt, zijn alle klantbrieven gedigitaliseerd, hebben we een duurzame hypotheekvorm

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

28/07/2021 12:15:01
 
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.