Content parsen preg_replace, raad ermee?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer Zorg-ICT

Complexe software ontwikkelen: dat is jouw ding! Voor onze vestiging in Hoogeveen zoeken wij fanatieke junior en senior .NET Developers die met de laatste Microsoft-tools en -technieken willen werken. Jij bent gemotiveerd en draagt graag verantwoordelijkheid voor je 'eigen' software, die wordt ingezet in ziekenhuizen door heel Nederland. Jouw baan Je bent verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van jouw eigen module. Dit gaat om complexe ICT-producten die feilloos moeten functioneren binnen de complexe omgeving van een zorgorganisatie. Je werkt zelfstandig of in een klein team. ChipSoft maakt gebruik van een zelf ontwikkeld multi tier framework. Tijdens een

Bekijk vacature »

Lead Developer .NET

Functie­omschrijving "De vrijheid krijgen om onderzoek te plegen en te kunnen werken met de meest nieuwe en geavanceerde technieken heb ik nog nergens zo goed kunnen toepassen als binnen het .Net-team van het MCC. De verschillende Belastingdienst-onderdelen verwachten een ontwikkelplatform waar ze op kunnen vertrouwen. Een tevreden klant als ultiem doel." Pim Albers - Lead developer bij de Belastingdienst. Het mobile competence center van de Belastingdienst (IV-GBS-MCC) bestaat uit twee nauw samenwerkende onderdelen, namelijk het app-team en het .NET-team. Het app-team ontwikkelt mobiele oplossingen voor burgers en bedrijven, voor de medewerkers van de Belastingdienst en voor andere rijksdiensten. Jouw team,

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Progress Developer / #1 software leverancier binne

Functieomschrijving Ben jij een ervaren Progress Developer die graag nog nieuwbouw ontwikkelt? Wil je daarnaast jouw hersenen kraken voor het automatiseren van complexe bedrijfsprocessen? Lees dan snel verder en kom erachter of deze rol als Progress Developer iets voor jou is! Uitvoeren van analyses ter bevordering van de betrouwbaarheid en performance van de bedrijfskritische applicatie; Meedenken over de architectuur en tevens waarborgen van de architectuur; Troubleshooten van complexe incidenten; Je deelt graag je kennis aan je collega’s; Maken van ontwerpen, schrijven van documentatie en het testen van de Progress applicatie; Implementeren van nieuwe functionaliteiten en het verzorgen van nazorg. Aanroepen

Bekijk vacature »

C# 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# 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 »

C# (WPF) developer gezocht, omgeving Ridderkerk

Voor een softwarebedrijf in de omgeving van Ridderkerk, dat zich richt op een specifieke branche binnen de logistieke sector, zijn we op zoek naar een .NET C# developer met bij voorkeur kennis van WPF en MVVM. Het gaat hier om een bedrijf van circa 20 mensen met een informele leuke bedrijfscultuur en korte lijnen. Er werken meerdere .NET developers maar het team waarbinnen je komt te werken bestaat uit 3 .NET C# developers. Het product waar je aan werkt is bedrijfskritisch en wordt 24/7 gebruikt. Het is een innovatief product dat recentelijk in de markt is gezet maar waar nog

Bekijk vacature »

.Net developer senior

Functie­omschrijving "Ik werk graag bij de Belastingdienst. Het is een complexe omgeving waarin ik met veel plezier werk. Mijn werk doet ertoe voor burgers en bedrijven." Linda Hagendijk - Applicatieontwikkelaar bij de Belastingdienst. Als .NET-developer voor de directie informatievoorziening werk je vooral voor het toeslagenverstrekkingensysteem. Dit zorgt voor de toekenning en uitbetaling van de zorg-, huur-, en kinderopvangtoeslag en het kindgebondenbudget, waar maar liefst 12 miljoen burgers in Nederland gebruik van maken. Het is een van de grootste.NET-toepassingen in Nederland, bestaande uit ongeveer dertig componenten met een totale omvang van ongeveer 16.000 functiepunten. De databases zijn zeer groot en het

Bekijk vacature »

Java developer medior

Functie­omschrijving ''Bij de Belastingdienst werken we in de Java-ontwikkelstraat met diverse frameworks en tools, zoals Maven, Wicket of Angular, Eclipse of IntelliJ. En of het nu gaat om het fixen van een bug of het maken van een nieuwe applicatie: ik leer veel en zit eigenlijk de hele dag te puzzelen. Alle Java-ontwikkelaars werken intensief samen in scrumteams, waarvan ook de product owner deel uitmaakt. Dit doen we lang niet altijd alleen op kantoor. De Belastingdienst is flexibel en geeft je de ruimte om je werk te doen waar en wanneer jij dat wilt.'' Atsje Gercama - Medior Java-developer bij

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Applicatiebeheerder CRM

Heb jij als allround applicatiebeheerder een sterke affiniteit met CRM systemen en heb je kennis van het verbinden van applicaties middels een Hybrid Integration Platform, dan is deze functie jou op het lijf geschreven! Wat ga je doen? Samen met je collega’s ben je verantwoordelijk voor een beschikbaar en goed functionerend applicatielandschap van ongeveer 150 zowel On-Premise als Cloud applicaties. Een uitdagende functie waarbij jij een actieve rol krijgt bij de implementatie van een nieuw CRM systeem. Je zal van het begin af aan deelnemen aan het CRM projectteam waarbij je vanuit jouw specialisme vragen beantwoordt en meedenkt over functionele,

Bekijk vacature »

C# Developer

C# Developer De uitgebreide versie Jij hebt ruim twee jaar ervaring als developer. Nu wil je graag je tanden zetten in nog complexere projecten. Met je team bereik je nieuwe hoogtes en zelfstandig maak je meters. Stilstand is achteruitgang voor jou; je hebt behoefte aan collegae die jou alles leren over Microsoft technologie maar wilt tegelijkertijd ook graag je eigen opgedane kennis delen. Alles wat vandaag nog onbekend is, moet je morgen toepassen in de volgende uitdaging en dàt is wat jou scherp houdt. Je hebt geen zin in een 60-urige werkweek maar haalt wel plezier uit zo nu en

Bekijk vacature »

.NET Developer / C# / Ambitieus / Vrijheid

Functieomschrijving Wil jij als .NET Developer in een omgeving terecht komen waar jij jouw net geschreven C# .NET code direct in de praktijk ziet gaan en waarbij jij met jouw C#.NET code bijdraagt aan een levensreddend product? Reageer dan snel op deze toffe .NET Developer functie! Het ontwikkelen van nieuwe functionaliteiten; Aanpassen van de bestaande bedrijfsapplicatie; Door ontwikkelen van huidige product; Bedenken van nieuwe oplossingen voor specifieke vraagstukken. Functie-eisen Minimaal hbo-gediplomeerd; Je hebt minimaal drie jaar relevante werkervaring als .NET Developer; Je kunt goed zelfstandig werken en hebt een goede drive; Je bent zowel Nederlands als Engels goed onderlegd. Bedrijfsomschrijving

Bekijk vacature »

Junior / Medior BI Ontwikkelaar

Uitdagende Medior BI Ontwikkelaars positie binnen een hecht team uin de energie sector in Vlissingen. Je draagt bij aan het nemen van data gedreven beslissingen voor de organisatie welke impact maken op strategisch en tactisch niveau. Bedrijfsomschrijving Onze klant richt zich op productie, handel én levering van energieproducten en-diensten op dezakelijke markt. Door mondiale prijsbewegingen van grondstoffen en de transitie naar eenduurzame, CO2-neutrale energievoorziening, zijn energiemarkten zeer dynamischen volatiel.Daarom optimaliseren we onze portefeuille aan zeer flexibele productie-, transport-enopslagcapaciteit continu en handelen we 24 uur per dag, 7 dagen per week. In deze dynamischeenergiemarkt iszijde stabiele factor.Dat is altijd zo geweest!

Bekijk vacature »

Senior Fullstack .NET developer

Wil jij samen met gemotiveerde en slimme collega’s bouwen aan ons geavanceerde landschap in Azure? En vind je het ook nog eens leuk om jouw kennis te delen met junior- en medior devs? Dan heb je wellicht interesse in de positie van: Senior fullstack .NET developer voor ons kantoor in Alkmaar Over de positie: Bij SnelStart werken we in een AGILE-structuur om de productie meer focus en impact te geven. Met je collega’s kom je tot de beste resultaten door onderlinge discussie, goede refinement sessies, reviews en écht teamwork. Je hebt de vrijheid om de dingen te doen zoals jij

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

11/08/2020 23:45:50
 
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 -
 
Karl Karl

Karl Karl

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.
 
Karl Karl

Karl Karl

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.