Regex omdraaien

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Node.js developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Medior Front-end Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte websites die in eigen beheer zijn. In onze vestiging in Nederweert zit onze development afdeling en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé Medior Front-end Developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het uitwerken van designs tot functionele layouts Je

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van de warehouses. Op dit moment wordt er nog gebruik

Bekijk vacature »

Technical Asset Specialist Substations

TenneT is growing fast to realize its strategic ambitions. We play a leading role in driving the energy transition. We are looking for a passionate Technical Asset Specialist for substations (onshore and offshore) at our location in Arnhem who will contribute to this and that might be you? Your contribution to TenneT We are searching for a motivated and engaged colleague as a technical asset specialist (onshore and offshore) for instrument transformers and surge arresters, with preferably a strong background in the area of insulation coordination. As a specialist for insulation coordination you are responsible for overarching topics regarding insultation

Bekijk vacature »

Software Ontwikkelaar

Functieomschrijving In deze uitdagende functie als Software Developer ga je de volgende taken uitvoeren: Maatwerk back-end software programmeren; API koppelingen bouwen; Software optimaliseren voor klanten; Bouwen maatwerk applicaties; Werken met Microsoft stack zoals C#, .NET (Core) en Entity framework; Bedrijfsprofiel Je gaat werken bij een klein softwareontwikkelingsbureau, die maatwerk software bouwt voor klanten door heel Nederland. Dit doen zij al meer dan 20 jaar. Het is van oorsprong een familiebedrijf, opgezet door de eigenaar, die er nog steeds werkt. Het team bestaat vooral uit back-end developers en één systeembeheerder. Je krijgt veel kans om jezelf te ontwikkelen en krijgt tevens

Bekijk vacature »

Junior / Medior C# .NET ontwikkelaar in Brabants t

Bedrijfsomschrijving Ben jij een gepassioneerde C# .NET ontwikkelaar met een voorliefde voor hardware? Dan is dit de perfecte kans voor jou! Bij ons bedrijf krijg je de kans om deel uit te maken van een team van sociale en enthousiaste techneuten die er elke dag naar streven om onze eigen ontwikkelde software nog beter te maken. Het team van ongeveer 10 team medewerkers maakt zich hard om de interne processen gestroomlijnd te laten verlopen. Functieomschrijving Als lid van ons hechte en behulpzame team word je betrokken bij diverse projecten. Daarbij krijg je te maken met data-analyses, content en de logistieke

Bekijk vacature »

Junior Front-End Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale oplossingen van Coolblue. Wat doe je als Junior Front-End Developer bij Coolblue? Als Junior Front-End Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen. Op dat moment komt je wil om te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te maken. Je sterk analytisch vermogen komt dan goed van pas! Ook Junior Front-End Developer worden bij Coolblue?

Bekijk vacature »

Front-end Developer Magento 2/Wordpress

Voor het aantrekkelijk houden en steeds vernieuwen van de huidige websites en webshops en het meedenken in de marketing zijn wij per direct op zoek naar een ervaren Front-end developer met gedegen kennis van Magento 2 (webshops) en Wordpress (websites). Wat bieden wij jou Mooi salaris! Meteen op contract bij de opdrachtgever! Gezellig, Kempisch bedrijf! 35 uur per week! Auto van de zaak! Wie ben jij Van een front-end developer verwachten wij: Een afgeronde Bachelor ICT opleiding met profiel ICT & Media Design. Dat je in het bezit bent van een Magento 2 professional front-end developer certificaat; Je hebt ruime

Bekijk vacature »

PHP developer

Functie omschrijving Voor een klein bedrijf in de buurt van Nieuwegein zijn wij per direct op zoek naar een talentvolle PHP developer. Er wordt veel ruimte geboden voor eigen initiateven, waardoor je een mooie stempel kan drukken op jouw eigen werkzaamheden (zowel operationeel als strategisch). Het bedrijf heeft middels externe programmeurs een multimedia platform ontwikkeld, maar willen geleidelijk de ontwikkeling naar binnen halen. Om die reden zoeken zij een communicatieve interne PHP developer die graag meebouwt aan het succesvolle product. Je gaat de volgende werkzaamheden verrichten: Platform beheren en programmeren (PHP, MySQL, JQuery, Javascript, XML & HTML); Communicatie en aansturing

Bekijk vacature »

Front-End React Developer

Als Front-End React Developer verbeter je de user experience van onze eigen webapplicaties voor onze collega's binnen Coolblue. Wat doe je als Front-End React Developer bij Coolblue? Als Front-end React Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten met React.js. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Front-end React Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop

Bekijk vacature »

.Net Ontwikkelaar

Dit ga je doen Het ontwerpen en ontwikkelen van software voor klanten; Het bijdragen van kennis en ervaring; Het integreren van van de software en afstemmen met klanten; Het functioneel testen van de ontwikkelde software. Hier ga je werken Voor onze relatie zijn wij momenteel op zoek naar een .Net Developer die wilt werken aan software die draait op machines wereldwijd. De organisatie produceert software voor applicaties die gebruikt worden in verschillende branches. De software wordt geleverd aan fabrikanten van verschillende robotica en machines. Als .Net ontwikkelaar ben je intern onderdeel van het team wat de applicatie omgevingen ontwikkeld en

Bekijk vacature »

SQL beheerder / ontwikkelaar

Functie omschrijving Voor een klant in omgeving Tiel zijn wij op zoek naar een SQL beheerder met affiniteit met technisch applicatiebeheer. Je krijgt een fijne in-house werkplek waar je gaat werken aan diverse projecten. Dit bedrijf doet het beheer van databases voor een aantal bancaire klanten. Op dit momenten hebben zij ruim 1500 databases in beheer. Jouw werkzaamheden gaan er als volgt uit zien: Je gaat de development afdeling ondersteunen bij het ontwikkelen van MS SQL Scripts. Je zal zowel zelfstandig als in teamverband MS SQL databases installeren & beheren. Je monitort en onderzoekt incidenten en de achterliggende oorzaken. Je

Bekijk vacature »

IoT Developer

Ben jij innovatief, heb jij passie voor energie en ben je data gedreven? Bouw dan mee aan IoT binnen Bredenoord. Samen met een gedreven team werk jij aan mooie technische en innovatieve oplossingen. Wat houdt de functie van IoT Developer in? Binnen Bredenoord zijn wij momenteel volop in ontwikkeling met ons IoT platform. Als uitbreiding van ons team zijn wij op zoek naar een IoT Developer. Je zal in projectverband meehelpen met het implementeren van IoT vraagstukken binnen Bredenoord. Als IoT Developer op onze R&D-afdeling word je verantwoordelijk voor het verder inrichten en beheren van ons nieuwe IoT platform. Dat

Bekijk vacature »

Software Programmeur PHP

Functie Wij zijn op zoek naar een PHP programmeur voor een leuke opdrachtgever in omgeving Alblasserdam. Heb jij altijd al willen werken bij een bedrijf dat veilige netwerkverbindingen levert door middel van veilige oplossingen? Lees dan snel verder. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Tevens

Bekijk vacature »
Joe Boos

Joe Boos

19/04/2016 13:11:03
Quote Anchor link
Hey,

Ik gebruik de volgende regex om te controleren of de input iets anders bevat dan toegestaan (a-Z0-9 punt, komma, singlequote, dash en <br>).....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$regex_char_appearance
= '/([A-Za-z0-9 \-\.\,\']|(<br>))/';

?>


Ik ben aan het proberen geweest om een soortgelijke regex te maken om user input op te schonen voor output. het lukt alleen niet echt en heb al verschillende dingen geprobeerd. Na een paar uur hacken ben ik bang dat ik me er een beetje blind op staar....de reeks van geprobeerde dingen is eindeloos maar hier een paar die redelijk lijken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

$regex_char_appearance
= '/(?!<br>)([^A-Za-z0-9 \-\.\,\'])/';

$regex_char_appearance = '/[^A-Za-z0-9 \-\.\,\']|[^(<br>)])/';

?>



het doel is dus om alles behalve [a-Z0-9], punt, komma, singlequote, dash en <br> te verwijderen voor output met preg_replace.


Kan iemand mij helpen een regex samen te stellen die werkt?
 
PHP hulp

PHP hulp

27/05/2026 02:23:23
 
Thomas van den Heuvel

Thomas van den Heuvel

19/04/2016 13:49:09
Quote Anchor link
Wat wil je uiteindelijk met de output doen? Waar wordt deze voor gebruikt? En met welk doel voer je bovenstaande controle(s) uit?

Is dit bijvoorbeeld om ervoor te zorgen dat berichten in een soort van gastenboek geen HTML of andere ongein bevatten? In dat geval zou je de output ook op andere manieren onschadelijk kunnen maken binnen de "HTML context" zonder eisen te stellen aan de invoer.
 
Joe Boos

Joe Boos

19/04/2016 14:25:46
Quote Anchor link
Feitelijk word het onderdeel van een profiel...

De output komt als tekst in beeld en word opgeslagen in een DB.

Later kan dit weer bewerkt worden in een textbox.(voor in de textbox word <br> tijdelijk omgezet naar \r\n)
 
Thomas van den Heuvel

Thomas van den Heuvel

19/04/2016 14:34:14
Quote Anchor link
Je kunt je invoer onschadelijk maken bij het weergeven door deze door de functie htmlspecialchars() heen te halen. Personen die een profiel invullen hoeven niet zelf regelovergangen te gaan typen als <br />. Nadat je htmlspecialchars() op de invoer hebt toegepast zou je de functie nl2br() (newline-to-break) kunnen toepassen op het resultaat, die effectief voorkomens van (\r)\n omzet in linebreaks (<br />).

Op deze manier leg je geen restricties op aan wat mensen kunnen invoeren, wat eigenlijk wel zo fijn is.

Oftewel: in plaats van het stellen van allemaal eisen aan de invoer, maak simpelweg de uitvoer onschadelijk.
 
Joe Boos

Joe Boos

19/04/2016 15:01:05
Quote Anchor link
Bedankt voor je voorstel Thomas.


Eigenlijk wil ik dat wel voor ik het op sla in de DB zodat ik me daarna niet al te druk hoef te maken om de output.... Daarom zet ik alle regelovergangen om in <br>. Verder hoeven gebruikers niks anders te gebruiken dan reguliere tekst en cijfers, punt, komma, dash en singlequote.
 
Thomas van den Heuvel

Thomas van den Heuvel

19/04/2016 15:39:27
Quote Anchor link
Het nadeel daarvan is dat je dit mogelijk weer terug moet veranderen als iemand deze informatie bij wil werken.

Het beste is meestal om de informatie zoveel mogelijk in zijn oorspronkelijke/rauwe toestand op te slaan en de wijzigingen die nodig zijn voor weergave zo laat mogelijk door te voeren, bijvoorbeeld pas op het moment dat je de gegevens op het scherm toont.
 
Joe Boos

Joe Boos

19/04/2016 15:46:57
Quote Anchor link
waarom zou ik dingen opslaan die ik niet gebruik?

en misschien kunnen we even terug naar de topic Thomas...;) De regex?
 
Ozzie PHP

Ozzie PHP

19/04/2016 15:55:25
Quote Anchor link
>> waarom zou ik dingen opslaan die ik niet gebruik?

Misschien omdat je later een ander systeem implementeert, waardoor je wél de originele input nodig hebt, of misschien wel om te kunnen constateren dat iemand bezig is geweest om je systeem te hacken.

>> en misschien kunnen we even terug naar de topic Thomas...;) De regex?

Die heb je dus wellicht niet (in die vorm) nodig. Dat is wat Thomas je probeer uit te leggen.
 
Thomas van den Heuvel

Thomas van den Heuvel

19/04/2016 16:02:31
Quote Anchor link
Mja dat probeerde ik je dus een beetje voor te spiegelen: de gekozen oplossing is niet erg praktisch omdat je je gebruikers een stramien oplegt over wat toegestaan is als invoer. Het is makkelijker om de uitvoer gewoon onschadelijk te maken...

Om terug te komen op je regexp: deze "werkt" waarschijnlijk niet omdat je niet heel je invoer matcht. Je kijkt enkel of er toegestane karakters in voorkomen. Om af te dwingen dat de gehele invoer bestaat uit jouw karakter-whitelist (wat mij dus nog steeds geen goed idee lijkt) moet je de gehele invoer matchen. Dit doe je door dat in je patroon aan te geven middels <delimiter>^<je patroon>$<delimiter>.

^ wil zeggen: match patroon vanaf het begin van de invoer
$ wil zeggen: match patroon tot het eind van de invoer

Ook zou ik mensen geen breaks laten typen. Dit is een weergave probleem wat ondervangen kan worden door nl2br(). Daarnaast zou je de expressie case-insensitive kunnen maken met de i-switch (toevoegen na je <delimiter>).

Maar je begeeft je al snel op een hellend vlak met zo'n beperkt karakter-repertoir. Karakters met accenten vallen al buiten de boot, dubbele punten en puntkomma's staan er niet tussen. Ga je dan elke keer karakters toevoegen als blijkt dat het toch handig is om deze toe te staan? Het is gewoon niet praktisch.
 
Ivo P

Ivo P

19/04/2016 17:26:10
Quote Anchor link
Een profiel: dus daarin gaat iemand waarschijnlijk zijn naam zetten.
Bij mij in het gezin zijn 3 namen met een accent op een letter.

Daarnaast zou iemand mogelijk iets met een bedrag willen noemen. Een Euro-teken zou dus zo maar kunnen.

En heel raar zijn de volgende tekens niet: de dubbele punt, de puntkomma. En een emailadres mag kennelijk ook niet opgeslagen worden?

Kortom: je sluit een heel stel tekens uit die volkomen onschuldig zijn, maar wel heel goed in een tekst kunnen staan.

Je verzint nu een beveiliging op de verkeerde plek.

De data die de bezoeker intikt, wil je zo rauw mogelijk in je database hebben. Bijvoorbeeld die Enter: als je daar direct een <br> van maakt, dan zit je dus met het probleem dat als hij de tekst nog eens wil bewerken, je de invoer vervuild hebt en dus die <br> weer naar een enter terug moet zetten.

Ook als je een email wilt maken van deze tekst, of een pdf of misschien wel een Excel-sheet, zit je met die <br> in je maag.

Kortom: je beperkt je nogal. terwijl braaf overal in combinatie met echo htmlspecialchars() gebruiken je probleem ook oplost.
 
Joe Boos

Joe Boos

19/04/2016 17:31:33
Quote Anchor link
Bedankt.

Ik zoek nog wel verder.
 
Ivo P

Ivo P

19/04/2016 18:14:53
Quote Anchor link
Hoezo nog zoeken?

de functie htmlspecialchars() hoeft toch niet gezocht te worden?
 
Joe Boos

Joe Boos

19/04/2016 23:49:44
Quote Anchor link
Ik stel jullie reacties op prijs en het advies is goed! Toch zijn het niet de antwoorden die ik zoek.

Waar jullie tegen aan kijken is 1 regel code van een uitgebreid script voor een spelletje. Ik doe dit als hobby en dingen later aanpassen is geen probleem. Ik heb geen haast....

Wat mij nog al stoort is dat jullie geen idee hebben van het hele plaatje en wat het exacte doel is...toch nemen jullie aan dat wat jullie zeggen wat ik nodig heb om te bereiken wat ik wil. Het hele plaatje is te uitgebreid om uit te leggen en de kans is groot dat jullie de helft niet lezen. Zoals nu. Er komen (en hoeven) geen namen in of eurotekens of andere dingen....dat is een aanname. E-mails die worden op een andere pagina ingevoerd en verwerkt. De gebruiker hoeft geen tags in te voeren die kan gewoon enteren in een textbox...iemand heeft dat aangenomen. Ik heb bijna letterlijk gezegd dat ik zelf alles omzet naar 1 tag. Het heeft niets met beveiliging te maken...hoewel het niet eens onveilig is. Waarom zou ik "<script>alert("hacked")</script>" op willen slaan? Waarom zou ik Scheiße of señor opslaan als er in het engels gecommuniceerd word...

Als je iemand iets wil leren luister(lees) dan eens goed naar de vraag...ik vraag niet naar HTML! HTML is wel het doel....ik vraag naar PHP en PCRE syntax.

Ik kwam hier omdat ik me blind staar op de opbouw van een regex...succes mannen maar morgen ga denk ik weer naar stackoverflow.com!

doei...;)
 
Ben van Velzen

Ben van Velzen

20/04/2016 00:07:22
Quote Anchor link
Het grappige is dat je zelf het exacte doel niet aangeeft en dan een ander ervan beschuldigt dat ie niet leest. Waar gaat dat mis denk je? Bij een ander of bij jezelf? Met dat gedrag ben je op SO al helemaal niet welkom.
 
Ozzie PHP

Ozzie PHP

20/04/2016 00:18:01
Quote Anchor link
>> Waarom zou ik Scheiße of señor opslaan als er in het engels gecommuniceerd word...

Dus iemand die Engelstalig spreekt kan niet José heten? Een Nederlander genaamd Ariën is niet welkom op de website? Enz. ??

Niemand hier probeert je te pesten ... we proberen alleen je intenties te begrijpen. Als jij daar niet voor openstaat ... tja ...
 
Ivo P

Ivo P

20/04/2016 11:03:05
Quote Anchor link
" omdat ik me blind staar "

Ik denk dat dat ook juist het probleem is.
Je bent nu zo gefocust op deze regex, dat je in een tunnel terecht bent gekomen.

Ik snap je benadering prima. (afgezien van die <br>, want als je gebruiker gewoon een enter mag typen, dan vult jouw script dus met nl2br() die <br>. En dan had je regex dus vóór nl2br() moeten staan).

En ja: als iemand alleen maar letters mag typen, zullen er weinig fouten kunnen optreden. Behalve dan als iemand een copy-paste doet van de hele php-handleiding, want dat gaat weer niet passen in je database (hoop ik).

Maar je blokkeert zoveel meer dan nodig is. En hierboven staan al zat voorbeelden van tekens die jij niet toestaat, maar die volkomen onschuldig zijn en waarvan je heel goed voor kunt stellen dat ze wel zinnig zijn in de invoer.
 
Joe Boos

Joe Boos

20/04/2016 11:50:10
Quote Anchor link
http://stackoverflow.com/questions/36737766/how-do-i-flip-a-regex

Ongeveer 40 minuten...opgelost. En wat te lezen/leren.

@Ben. Ik bedoel het echt niet slecht. Het doel is in de eerste post al aangegeven. een regex die het tegenovergestelde doet van wat al mogelijk is. characters niet toelaten...en verwijderen met preg_replace.

@Ozzie. Ik voel me niet gepest. nogmaals...er komen/horen geen namen in. ;)

@Ivo. Ik ben idd gefocused omdat ik een doel heb. Nogmaals...de gebruiker hoeft geen <br> te typen. En als iemad een c/p doet gaat het door deze regex. mb_strimwidth zorgt er voor dat het niet langer word dan ik wil en in de DB in takt blijft.Wil je nog meer weten of is het goed zo? ;)

Bedankt voor jullie tijd! kusje! :D
 
Ivo P

Ivo P

20/04/2016 12:07:53
Quote Anchor link
Je hebt nu inderdaad een oplossing.

Een oplossing voor een nodeloos lastig probleem: immers de gebruiker voert geen <br> in, maar Enter.
Daar had je dus een heel veel simplere regex gehad als je voor nl2br() de check deed.

Maar daarnaast heb je nu een oplossing voor een non-probleem. Er kan geen enkel serieus probleem optreden als iemand in zijn profiel een é een puntkomma en een ! zou hebben staan.

zelfs een < en een " zou onschuldig zijn, als je maar netjes overal htmlspecialchars gebruikt.

Ik denk dat de meeste mensen die hierboven gereageerd hebben, in gedachte houden dat je over een aantal weken tóch letters met accenten nodig hebt.
En dat kort daarna blijkt dat je ook een ! en ? wel handig vindt.
En dat je dan dus eigenlijk je filter steeds meer oprekt tot een situatie die je ook bereikte met htmlspecialchars.

Geloof me: het komt best veel voor dat de beschrijving van de probleemstelling "het is altijd A óf B" na oplevering door de klant wordt bijgesteld naar "ja, maar behalve als C, en soms komt D ook voor maar dan wel gelijktijdig met B"

Maar goed.
Vermoedelijk ga je voorlopig even blij zijn met je regex.
 
Thomas van den Heuvel

Thomas van den Heuvel

20/04/2016 15:18:14
Quote Anchor link
En wat de topicstarter wil is escape-on-input, wat zelden tot nooit een goed idee is.

Ah well.
 



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.