Content parsen preg_replace, raad ermee?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET developer / C# / Webservices

Functieomschrijving Wil jij als .NET Developer bij deze organisatie in Tilburg als kartrekker in een Scrum team fungeren en je helemaal uitleven in de backend met C#? Krijg jij een grotere kick van high-security en high-availability .NET backend oplossingen dan van een gelikte frontend? Dan past deze functie jou perfect! Programmeren van high-availability en high-security applicaties in C#; Samen met je teamgenoten nieuwe applicaties/diensten ontwikkelen in .NET; Overleggen met de informatie analisten en testers; Ontwikkelen van webservices (WCF); 20% van je tijd besteden aan innovatie; Deelnemen aan projecten om nieuwe ketenpartijen toe te voegen; Bouwen van unit testen. Functie-eisen Beschikt

Bekijk vacature »

.NET ontwikkelaar / C# / miljarden berichten

Functieomschrijving Ben jij als .NET Developer bekend met oplossingen voor zwaar berichtenverkeer? Wil jij onderdeel zijn van een organisatie in regio Den Bosch die de verantwoording heeft om grote hoeveelheden gevoelige data veilig te versturen? Dan is dit je kans om voor een topclub te komen werken! Programmeren van high-availability en high-security applicaties in C#; Samen met je teamgenoten nieuwe applicaties/diensten ontwikkelen in .NET; Overleggen met de informatie analisten en testers; Ontwikkelen van webservices (WCF); 20 % van je tijd besteden aan innovatie; Deelnemen aan projecten om nieuwe ketenpartijen toe te voegen; Bouwen van unit testen. Functie-eisen Beschikt over HBO/WO

Bekijk vacature »

Quality engineer

Are you interested in quality management systems in the computer industry and do you have a minimum of 4-5 years hands-on experience? Then you may be interested in the position of: Quality engineer for our office in s’ Hertogenbosch About the position: As a quality engineer you will work with senior management of the global production operations in establishing quality-focus teams, mandate standard practices of quality principles and attend to the oversight responsibility to all global operations sites and cross-functional departments. Your tasks include but are not limited to: Monitoring, reviewing and controling manufacturing processes of Dutch production; Collecting necessary

Bekijk vacature »

.Net custom software developer

Jouw uitdaging als .Net developer Als .Net custom software developer creëer je maatwerkoplossingen. Denk aan een mobiele applicatie voor het stroomlijnen van logistieke processen, een platform voor een uitkeringsorganisatie of de passagiersbeleving van een vliegtuigmaatschappij. Hierbij gaat het vaak om complexe omgevingen met veel gebruikers, waarbij de lat dus hoog ligt. Wat jouw werkzaamheden zoal zijn? Je werkt mee aan het gehele ontwikkelproces, van ontwerp, design en ontwikkeling tot testen en beheren van Microsoft applicaties en PoC’s. Je gaat werken met o.a. de volgende technologie: Azure, C#, .Net core, Angular, React, Vue en soms AWS. Je neemt deel aan meetings

Bekijk vacature »

C#/.Net developer bij Profit4Cloud

Als Medior C# developer bij Profit4Cloud ontwikkel je de back-end en front-end oplossingen van overmorgen. We omarmen innovaties en zoeken daarvoor versterking in ons .Net-team. Je werkt samen met onze enthousiaste en eigenzinnige professionals. Gepassioneerd zijn we altijd bezig met ‘the next big thing’, of het nu gaat om het ontwikkelen van een supergave nieuwe applicatie of het up-to-date houden van onze vakkennis. Jouw spec's Een HBO of WO-diploma in Informatica, ICT of iets wat daarop lijkt C# is jouw second nature. Angular, React of NodeJS zijn jou ook niet vreemd evenals het .Net Core 2 platform Daarnaast breng je

Bekijk vacature »

Java Developer Nieuwbouw Internationaal

Functieomschrijving Ben jij een ervaren Java Developer, of ben jij sinds kortgeleden in de wereld van Java gestapt, en wil jij met jouw kennis van Java een bijdrage leveren aan de core systemen van deze internationale organisatie? Lees dan snel verder! Ontwikkelen van applicaties en nieuwe functionaliteiten in Java; Aanpassingen maken in bestaande code; Overleggen en samenwerken met architecten en Product Owners; Werken binnen een multidisciplinair Scrumteam met betrekking tot analyse, design en ontwikkeling; Samenwerken en ondersteunen van testers in het proces van automatische regressietesten. Functie-eisen Je bent in het bezit van een hbo-diploma; Minimaal twee jaar relevante werkervaring; Je

Bekijk vacature »

(Junior) C#. NET Webdeveloper (.NET/C#/Eindhoven/4

As a C# .Net Developer you will be responsible for developing back-end and front-end features for 8 e-cpmmerce websites with about 500.000 visitors per month. You will work with latest Microsoft technology running on Microsoft Azure platform. You use such tools as jQuery, Bootstrap, BitBuckey/GIT, Angular JS, Visual Studio (2017/2019), Jira. You will be a part of ICT team (6 people) that works in a close cooperation with an on-line marketing department. The workflow is organized in accordance with Agile (SCRUM) methodologies. Requirements At least 1 year of experience in .NET developing Knowledge of ASP.NET MVC Knowledge of SQL 2012

Bekijk vacature »

BI Backend Specialist

Onze opdrachtgever is het Instituut Fysieke Veiligheid (IFV). Het IFV draagt bij aan een veilige samenleving door het versterken van de veiligheidsregio’s en hun partners bij het professionaliseren van hun taken. De BI voorziening van het IFV moet invulling gaan geven aan de behoefte van de veiligheidsregio’s, het IFV, hun bestuur en management om op informatie hun primaire proces te sturen. De BI voorziening voorziet (generiek) in die behoeftes: o het ontsluiten van (landelijke) data (inclusief nieuwe databronnen); o het presenteren van dashboard functionaliteit voor bepaalde rapportage vraagstukken; o het faciliteren van dataopslag en rapportage-tooling; o het op verzoek volledig

Bekijk vacature »

C# / .NET Developer / SiteCore

Functieomschrijving Ben jij een Developer met kennis van C# / .NET en wil jij je graag specialiseren op het gebied van Sitecore? Wil jij daarnaast werken aan uitdagende Inhouse projecten voor grote en bekende partijen in Nederland? Dan is dit de rol waarnaar jij op zoek bent! Binnen deze rol zal jij je als C# / .NET Developer (met de focus op SiteCore) aan de slag gaan voor een van de meest bekende bureaus op het gebied online platformen, een rol met veel afwisseling en voldoende technische uitdaging! Werken aan diverse en uiteenlopende projecten, waarbij je meer dan eens pionierswerk

Bekijk vacature »

Informatieanalist

Hou je van analyseren, structureren, specificeren en problemen oplossen en vraag je door tot je het begrijpt? Kan jij complexe processen eenvoudig en helder beschrijven? Ben je daarnaast nieuwsgierig naar de ontwikkelingen van de digitale bibliotheek? Dan ben jij misschien wel de Informatieanalist waarnaar we op zoek zijn. Wat ga je bij ons doen? Als Informatieanalist maak je onderdeel uit van een team van vier informatieanalisten. Je wordt ingezet voor verschillende projecten en analysewerkzaamheden. Zo vertaal je onder meer informatiebehoeften vanuit verschillende werk- en bedrijfsprocessen in informatievoorziening. Je hebt een onmiskenbare rol bij de ondersteuning van de “business” met het

Bekijk vacature »

Ervaren .NET C# ontwikkelaar, complex maatwerk (De

Ben je een ervaren .NET ontwikkelaar op zoek naar een analytische omgeving? Waar hoogopgeleiden en ervaren collega’s jouw kennis naar een hoger niveau kunnen tillen? Waar je met een leuk team samen aan innovatieve producten werkt? Dan zou de deze organisatie wel eens goed bij je kunnen passen. Voor een organisatie in Delft zoeken we momenteel een ervaren .NET C# ontwikkelaar. De organisatie richt zich op complexe maatwerk applicaties voor externe klanten. Tevens moet je (afhankelijk van je niveau) mee kunnen denken met functionele en architectonische vraagstukken. De projecten kunnen erg uiteenlopend zijn en het is maar net wat de

Bekijk vacature »

Business Developer / France

Discipline Marketing & Sales Location Utrecht (NL) Hours a week 40 As our Business Developer France You must love sales! Because YOU will make it your goal to successfully promote and expand our B2B drop shipment program. You will make this a success because you are commercially driven and convinced of online B2B sales. We trust you to work independently. You have an enthusiastic international team that can get you up to speed. What you will do Generates new business by attracting new partners to the vidaXL B2B Drop-shipping Platform, focusing on the German speaking markets; Analyzes the market and

Bekijk vacature »

Fullstack Developer/ ASP.NET (Core) / Cloud develo

Functieomschrijving Ben jij een full stack developer die graag aan de slag gaat met cloud development en Continious delivery? Bouw jij graag mee aan informatiediensten en verscheidene platformen? Lees dan snel verder! Bouwen van nieuwe functionaliteiten (10%) Doorontwikkeling van één van de complexe applicaties (30%) Bugfixing (30%) Testen van (jouw) code (30%) Functie-eisen Minimaal een MBO-diploma met HBO werk- en denk niveau; Minimaal 2 a jaar ervaring als .NET developer; Ervaring C#, ASP.NET Core; Ervaring met het Entityframework, Visual Studio; Ervaring binnen een SCRUM/Agile omgeving; Ervaring met Azure (DevOps) is een pré; Ervaring met MVC is een pré. Bedrijfsomschrijving Deze

Bekijk vacature »

.NET Developer

.NET Developer De uitgebreide versie Jij hebt ruim twee jaar ervaring als developer. Nu wil je graag je tanden zetten in nog complexere projecten. Samen met je team bereik je nieuwe hoogtes en zelfstandig maak je meters. Je hebt behoefte aan collegae die jou alles leren op het gebied van 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 dan een

Bekijk vacature »

Oracle Ontwikkelaar Consultant binnen verschillend

Functieomschrijving Door de hoeveelheid opdrachten kunnen ze hier nog zeker versterking gebruiken van een goede Oracle Ontwikkelaar die over geruime ervaring met PL/SQL beschikken. Wanneer je ook nog ervaring hebt met APEX is dat helemaal mooi meegenomen, maar zeker geen eis. Binnen deze functie word je ingezet op uitdagende complexe Oracle vraagstukken bij diverse klanten. Zoals hierboven al aangegeven loopt het type klant ver uiteen wat veel uitdaging en variëteit biedt. Met jouw technische kennis ga je jouw klanten binnen de juiste behoeften te voorzien en ben je voornamelijk bezig met PL/SQL code. Door jarenlange ervaring en complexe vraagstukken is

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

24/01/2020 05:39:31
 
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.