{"id":231309,"date":"2023-01-02T10:35:00","date_gmt":"2023-01-02T07:35:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231309"},"modified":"2023-01-02T10:39:48","modified_gmt":"2023-01-02T07:39:48","slug":"du-boer-anvaenda-php-filtreringsfunktioner-del-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/du-boer-anvaenda-php-filtreringsfunktioner-del-1\/","title":{"rendered":"Du b\u00f6r anv\u00e4nda PHP-filtreringsfunktioner, del 1"},"content":{"rendered":"\n<p>Jag har pratat om datasanering i WordPress i <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/sanering-av-webbadresser-i-wordpress\/\" title=\"tidigare inl\u00e4gg\">tidigare inl\u00e4gg<\/a>. Detta \u00e4r ett \u00e4mne som \u00e4r viktigt inte bara f\u00f6r de av oss som arbetar med att bygga l\u00f6sningar f\u00f6r andra i WordPress, utan ocks\u00e5 f\u00f6r de som skriver kod som direkt interagerar med en databas via PHP.<\/p>\n<p>Visst, det finns inbyggda WordPress-funktioner f\u00f6r att g\u00f6ra denna process enklare, men det finns ocks\u00e5 inbyggda PHP-filtreringsfunktioner som hj\u00e4lper till med detta. N\u00e4mligen <code>filter_var<\/code>och <code>filter_input<\/code>och det h\u00e4r \u00e4r saker som jag tror \u00e4r bra f\u00f6r PHP-utvecklare att veta.<\/p>\n<h2>PHP-filtreringsfunktioner, del 1: Variabler<\/h2>\n<p>Filtrering av variabler g\u00f6rs av den passande namngivna <code>filter_var<\/code>funktionen. Den officiella definitionen \u00e4r:<\/p>\n<blockquote>\n<p>Filtrerar en variabel med ett specificerat filter<\/p>\n<p><a href=\"https:\/\/www.php.net\/manual\/en\/function.filter-var.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP-manualen<\/a><\/p>\n<\/blockquote>\n<p>Sj\u00e4lva definitionen kan l\u00e4sas lite cirkul\u00e4r, s\u00e4rskilt om du precis har b\u00f6rjat med PHP eller med att anv\u00e4nda filtreringsfunktioner. Det viktiga att f\u00f6rst\u00e5 i denna definition \u00e4r vad ett filter faktiskt \u00e4r.<\/p>\n<p>S\u00e5 om du \u00e4r van vid att arbeta med till exempel booleska v\u00e4rden, heltal, e-postadresser och s\u00e5 vidare (och vem \u00e4r inte det?), d\u00e5 \u00e4r det mer vettigt, eller hur? Det vill s\u00e4ga, om du beh\u00f6ver tillhandah\u00e5lla n\u00e5gon typ av validering kring dessa typer av v\u00e4rden, s\u00e5 kan detta hj\u00e4lpa.<\/p>\n<p>Vad som \u00e4r bra \u00e4r att oavsett vad det \u00e4r du filtrerar s\u00e5 <code>filter_var<\/code>kommer det att \u00e5terv\u00e4nda <code>false<\/code>n\u00e4r filtret misslyckas.<\/p>\n<p>L\u00e5t oss s\u00e4ga att du vill filtrera en e-postadress, d\u00e5 kan du g\u00f6ra n\u00e5got s\u00e5 h\u00e4r:<\/p>\n<ul>\n<li><code>filter_var($emailAddress,\u00a0FILTER_VALIDATE_EMAIL)<\/code>;<\/li>\n<\/ul>\n<p>Naturligtvis \u00e4r det inte utan n\u00e5gra gotchas. Till exempel kommer den inte att validera icke-latinska dom\u00e4ner. Mer om detta f\u00f6r en stund.<\/p>\n<p>Hur som helst, kanske du vill filtrera andra typer av v\u00e4rden:<\/p>\n<ul>\n<li><code>filter_var($url,\u00a0FILTER_VALIDATE_URL)<\/code><\/li>\n<li><code>filter_var('1001',\u00a0FILTER_VALIDATE_INT)<\/code><\/li>\n<\/ul>\n<p>Och du kan g\u00f6ra dem mer komplicerade beroende p\u00e5 dina behov. S\u00e4g till exempel att du m\u00e5ste avg\u00f6ra om en IP \u00e4r offentlig. D\u00e5 kan du anv\u00e4nda n\u00e5got mer utarbetat s\u00e5 h\u00e4r:<\/p>\n<ul>\n<li><code>filter_var($ip,\u00a0FILTER_VALIDATE_IP,\u00a0FILTER_FLAG_NO_PRIV_RANGE\u00a0|\u00a0FILTER_FLAG_NO_RES_RANGE)<\/code><\/li>\n<\/ul>\n<p>Grejen \u00e4r att det \u00e4r viktigt att veta hur <code>filter_var<\/code>det fungerar och vilka filter som finns tillg\u00e4ngliga. Det \u00e4r verkligen d\u00e4r nyttan av detta spelar in. F\u00f6r detta \u00e4ndam\u00e5l rekommenderar jag starkt att du l\u00e4ser igenom <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.validate.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">valideringsfiltren som PHP erbjuder.<\/a><\/p>\n<p>Slutligen, kom ih\u00e5g anteckningen ovan om icke-latinska dom\u00e4ner med e-postadresser? Det finns n\u00e5gra fall som detta med vissa funktioner som du m\u00e5ste granska vad manualen har att s\u00e4ga om vissa webbadresser, dom\u00e4ner och s\u00e5 vidare innan du anv\u00e4nder dem.<\/p>\n<p>I de fallen kanske det tyv\u00e4rr <code>filter_var<\/code>inte alltid fungerar. Ist\u00e4llet kan regulj\u00e4ra uttryck vara en l\u00e4mplig ers\u00e4ttning.<\/p>\n<h2>Hur \u00e4r det med filtrering av ing\u00e5ngar?<\/h2>\n<p>Om du har erfarenhet av att \u00e4ven arbeta med variabler som <code>$_GET<\/code>och <code>$_POST<\/code>s\u00e5 finns det en annan filtreringsfunktion specifikt f\u00f6r det.<\/p>\n<p>Och i n\u00e4sta inl\u00e4gg kommer jag att g\u00e5 igenom hur man b\u00e4st anv\u00e4nder de p\u00e5 plats som s\u00e5 m\u00e5nga av oss traditionellt anv\u00e4nder.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Det finns inbyggda WordPress-funktioner f\u00f6r att g\u00f6ra validering enklare, men det finns ocks\u00e5 inbyggda PHP-filtreringsfunktioner.<\/p>\n","protected":false},"author":1,"featured_media":236152,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[838,848,901,755,807,787,724,868],"tags":[1173],"class_list":["post-231309","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-oeppen-kaella","category-php-9","category-programvara-med-oeppen-kaellkod","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=231309"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231309\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/236152"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=231309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=231309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=231309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}