Regex omdraaien

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Oracle Apex Developer

Dit ga je doen Jouw taken bestaan uit: Het bouwen maatwerk Oracle applicaties voor Europese business units; Het implementeren van de nieuwste technieken om te blijven innoveren; Actief meedenken en aandragen van verbetervoorstellen. Hier ga je werken Deze organisatie in de regio Veenendaal is een van wereld grootste retailers met ruim 16.000 winkels in 27 markten en jaarlijks ruim 5,3 miljard klanten die winkelen bij een van hun welbekende retailmerken. Binnen de organisatie is er een IT Group actief die dient als IT Service Provider voor de hele organisatie en waar dagelijks IT'ers werken aan state-of-the-art IT oplossingen. Dit doen

Bekijk vacature »

(Junior) Back-end Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Altijd al willen werken bij een organisatie, die maatwerk applicaties bouwt, die echt impact hebben in de maatschappij? Dit is je kans. Voor een kleine organisatie in de regio van Eindhoven ben ik op zoek naar een C# Ontwikkelaar. Jij gaat aan de slag met de ontwikkeling van maatwerk software en applicaties. Deze organisatie werkt voor grote organisaties in Nederland, maar ook voor het MKB. De projecten waar je aan gaat werken zijn erg divers, waardoor je werk uitdagend blijft en je erg veel kan leren. Verder ga je aan

Bekijk vacature »

Oracle Apex developer

Bedrijfsomschrijving My client is a technology company based in Den Bosch, the Netherlands. They specialize in providing innovative software solutions to clients, and they are currently looking for an experienced Oracle Apex developer to join the IT team. Functieomschrijving As an Oracle Apex developer, you will be responsible for designing, developing, and maintaining web-based applications using Oracle Apex. You will work closely with project managers, business analysts, and other developers to ensure that clients' needs are met and that the software solutions are of the highest quality. Responsibilities: Design, develop, and maintain Oracle Apex applications. Work with project managers and

Bekijk vacature »

React developer Inhouse cloudplatform

Functie De functie: Als front-end developer kom je te werken naast 2 andere front-end/React developers, waaronder één senior. Een hele mooie kans dus om in korte tijd veel nieuwe kennis en ervaring op te doen. Ze hebben momenteel veel werk hierin en daarom willen ze het team graag uitbreiden. Het is van belang dat je, zeker gezien het vele thuiswerken, in ieder geval al een aantal projecten hebt gedaan in React. Taken waar je aan kunt denken zijn het ontwikkelen van client-applicaties o.b.v. HTML5, React en andere open standaarden. Ook ben je nauw betrokken bij het implementeren van designs o.b.v.

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 »

Backend Developer Scrummaster .NET

Samengevat: Deze werkgever is een ambitieus internetbedrijf met een passie voor digitale communicatie. Ben jij geschikt als Backend Developer? Heb je ervaring met .NET platform? Vaste baan: Backend Developer / SCRUM Master Scrum HBO WO €3.800 - €6.000 Deze werkgever is een innovatief bedrijf met enthousiaste mensen die jarenlang ervaring hebben met het ontwikkelen internet- en intranetoplossingen. Wij houden van korte lijnen en open en eerlijke communicatie. Wij zetten graag onze jarenlange ervaring in om perfect werkende oplossingen te ontwikkelen. Wij ondersteunen dienstverlenende organisaties bij het ontwikkelen en realiseren van een effectief, adaptief communicatieplatform. Je ontwikkelt met ons de meest

Bekijk vacature »

.NET developer

Functie Als .NET developer start jij in een ontwikkelteam met 15 developers en twee testers. Samen zijn jullie verantwoordelijk voor financiële applicaties met meer dan 50.000 gebruikers. Een deel van het team is verantwoordelijk voor de webapplicaties van deze organisatie. Ook zijn er twee app ontwikkelaars werkzaam in het team die zich focussen op de mobiele applicatie. Als .NET ontwikkelaar ga jij aan de slag met de webapplicaties van deze organisatie. Hierbij maak jij o.a. gebruik van C# .NET, ASP.NET, T-SQL, Angular en TypeScript. De nadruk van jouw functie ligt wel op de backend van de applicatie. Wat jouw functie

Bekijk vacature »

Traineeship ICT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

Bekijk vacature »

Database developer - SQL

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je sluit aan bij meetings en brengt het gehele logistieke proces in kaart. Vervolgens ga je als lead developer aan de slag om de klus te klaren. Je stuurt het junior developer team en helpt, zo nodig,

Bekijk vacature »

PHP Programmeur

Functieomschrijving Vanuit het hoofdkantoor in omgeving Breda, ontwikkel je als PHP programmeur niet alleen webapplicaties, maar ben je verder ook gefocust op het constant inspelen op nieuwe innovaties m.b.t software ontwikkeling. Naast het ontwikkelen van webapplicaties, bouwt deze toffe werkgever ook webshops en websites voor hun opdrachtgevers. Wat ga je doen? Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klanten; Het ontwerpen en implementeren van webapplicaties met het Symfony framework; Het schrijven van een schone en efficiënte code volgens het Symfony framework; Onderhouden en updaten van bestaande applicaties die

Bekijk vacature »

Software ontwikkelaar ASP .Net / C#

Functie omschrijving Gezocht! Software ontwikkelaar. Ben jij bekend met termen als ASP .Net, C# en SQL? Ben jij op zoek naar een afwisselende en uitdagende IT-functie binnen de agrarische sector? En omschrijf jij jezelf als zelfstandig, enthousiast en proactief? Dan hebben wij de perfecte functie voor jou! Als Software ontwikkelaar binnen deze organisatie ben je samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Je gaat hierbij bijdragen aan de vertaling van klantwensen naar effectieve softwareoplossingen. Verder bestaan je werkzaamheden uit: Technische uitwerking van de business

Bekijk vacature »

Junior Software Developer C# Verhuursector Verhuur

Samengevat: Wij ontwikkelen en leveren softwaresystemen voor de logistieke sector en de verhuursector. Ben jij geschikt als Junior Software Developer? Heb je ervaring met Delphi? Vaste baan: C# Software Developer Logistiek HBO €2.500 - €3.900 Deze werkgever is een software ontwikkelaar, gericht op software voor de logistieke sector. Deze werkgever heeft eigen producten ontwikkelen en leveren ook maatwerk. Ons bedrijf kent een boeiende en inspirerende werkomgeving met een open cultuur en mogelijkheden voor je verdere ontwikkeling. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om

Bekijk vacature »

Medior front-end developer gezocht (€3.300 -

Functie Wat ga je doen? Jij als front-end developer gaat werken binnen de teams van/voor onze klant. Je werkt in een team met starters en ervaren ontwikkelaars met allemaal 1 overeenkomst; passie voor het vak. Maak je een fout? Geen probleem, leer ervan en ga dan weer door. Door de variëteit aan werk kun je in verschillende omgevingen een kijkje nemen en jezelf dus snel ontwikkelen. Wat hebben we jou te bieden? • Uitdagende projecten bij mooie klanten (bij jou in de buurt, of binnenkort intern vanuit ons kantoor!) • Een jonge organisatie met talentvolle collega’s • Veel ruimte voor

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

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

14/05/2024 21:39:09
 
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.