Content parsen preg_replace, raad ermee?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Network Engineer (f/m/d) in Heidelberg

Network Engineer (f/m/d) The IT Services team operates and supports the IT infrastructure and services at EMBL headquarters in Heidelberg and at the laboratory’s sites in Barcelona and Rome. As part of IT Services, the Network team is responsible for managing and developing the network infrastructure in our data centres, on campus, and to our external network providers. As a leading scientific institution with highly data-intensive research, extensive data flows at and between the laboratory’s six sites and to the Internet, EMBL is connected to national and international scientific networks using state-of-the-art technologies from vendors including Cisco, Extreme Networks and

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 »

C# developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als C# Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. 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. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the Year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Applicatieontwikkelaar ABAP

Bedrijfsomschrijving Functieomschrijving De kandidaat zal worden ingezet binnen een van de DevOps teams binnen SCI (Service Centrum Inburgering) voor het ontwerpen en bouwen in SAP ABAP van de binnen SCI gebruikte informatiesystemen. Voornaamste voorkomende werkzaamheden zijn het aanpassen van en bouwen van nieuwe programmatuur in ABAP (Objects), waarbij ook gebruikt wordt gemaakt van DDD (Domain Driven Design) en het opstellen/aanpassen van Functionele/Technische ontwerpen. Daarnaast moeten ook formulieren met SAP Smartforms worden aangepast. Verder speelt de overgang naar SAP4Hana en SAP CPI. Vanwege het veelvuldig gebruik van SAP PO is kennis hiervan een pré. Achtergrond opdracht Momenteel werken meerdere DevOps teams

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

Bekijk vacature »

C# developer

Functie omschrijving We are looking for a dutch native speaker Ik ben op zoek naar een back-end developer, die met name kennis & ervaring heeft van de programmeertaal C#. Jij gaat aan de slag bij een topspeler in de logistieke sector, die zich behalve met logistiek, ook bezig houdt met softwareontwikkeling. Welke taken komen hierbij kijken? Je gaat desktop- en webapplicaties onderhouden en optimaliseren, waarin je werkt met o.a. C#, ASP.NET, SQL Server en T-SQL. Je hebt regelmatig klantcontact om de wensen in kaart te brengen en te evalueren over de huidige draaiende applicaties. Je implementeert nieuwe functionaliteiten toe aan

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 »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Lead Webdeveloper

Als Lead webdeveloper bij KUBUS ben je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de webapplicatie en services van BIMcollab. In je rol als lead developer zoek je als vanzelf op een creatieve manier naar het optimum tussen benodigde implementatie-tijd, de performance van de applicatie en een snelle go-to-market van features, aansluitend bij onze geautomatiseerde test- en release train. Hierbij bewaak je in samenwerking met de andere senior ontwikkelaars in je team de architectuur van de applicatie en adviseer je de product owner over noodzakelijke refactoring om de onderhoudbaarheid van het platform te verbeteren. Ons

Bekijk vacature »

Robot Programmeur

Een verantwoordelijke baan met leuke uitdagingen. Heb jij ervaring met het programmeren van robots? Kan jij goed samenwerken met collega's die verschillende specialisaties hebben? Ben je oplossingsgericht, analytisch en flexibel? Ga dan aan de slag als Robot Programmeur bij Gibas in Nijkerk! Als Robot Programmeur kom je te werken bij Gibas. Dat betekent dat je gegarandeerd meewerkt aan unieke oplossingen in productieprocessen. Bij elk project moet er opnieuw geëngineerd en geprogrammeerd worden. Dat maakt jouw werk uitdagend! Voordat je robots gaat programmeren komt er het volgende bij kijken: De opdracht gaat van de afdeling Sales naar de afdeling Operations door

Bekijk vacature »

Senior front-end developer (React)

Functie Momenteel zijn ze op zoek naar een ervaren front-end developer. Als senior werk je nauw samen met 5 collega developers. Een klein scrum team dus, met korte lijnen waardoor jouw ideeën snel tot uitvoering gebracht kunnen worden. De huidige applicaties worden veelal ontwikkeld met o.a. React, Redux, TypeScript. Ze zijn echt op zoek naar een kartrekker in het team. Naast het meedenken over, opzetten en uitvoeren van bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Hierin nemen ze graag de tijd om mensen de ruimte te

Bekijk vacature »

Back-end PHP Software Developer - Juniorfunctie

Functieomschrijving Wij zijn op zoek naar een PHP Software Developer om ons team te versterken en mee te werken aan de ontwikkeling van eigen IOT-oplossingen. In deze functie ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor het uitlezen en managen van sensoren in machines. Je werkt nauw samen met een team van ontwikkelaars en engineers om de beste software-oplossingen te creëren. Jouw werkzaamheden zien er als volgt uit: Je bent in deze rol verantwoordelijk voor het ontwerpen, ontwikkelen en onderhouden van webapplicaties en softwaretoepassingen voor in-house ontwikkelde IOT oplossingen. Je werkt aan complexe databases en back-end

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Junior Outsystems developer

Functie Als junior Outsystems developer wordt jij onderdeel van een multidisciplinair team van 23 software engineers. Ons team werkt agile en termen als Continuous Integration en Continuous Delivery zijn bij ons dagelijkse koek. Wij werken aan uitdagende en afwisselende projecten met als doel onze klanten een totaal oplossing aan te bieden. Als junior Outsystems developer krijg jij bij ons de kans om jezelf te ontwikkelen naar een volwaardige ervaren en gecertificeerde Outsystems developer. Jij een team met ervaren mensen (10+ ervaring) om je heen. Zo heb jij niet het gevoel dat jij meteen in het diepe wordt gegooid en uiteraard

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Barendrecht! Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Binnen deze rol houdt jij je met het volgende bezig: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps

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

26/04/2024 06:20:06
 
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.