wat gebeurt er met bv ö door POST en?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

El Grimbo

El Grimbo

19/06/2010 16:56:44
Quote Anchor link
Hi

Ik wil invoer met een functie op een aantal karakters toetsen. De reg ex is getest in Regex buddy en klopt. Als je alt 148 gewoon in de functie invoert: niets aan de hand krijg je ok. Maar run onderstaand scriptje en je krijgt niet ok!

Waarom gebeurt dat?


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
<?php
ini_set('display_errors',1);
error_reporting(E_ALL | E_STRICT);
function
test ($str)
{

    return  (preg_match ("/^[A-Za-zÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ .&,\-'\/0-9]+$/", $str));
}


if(isset($_POST['tekst']))
{

    if(test($_POST['tekst']))
    {

        echo $_POST['tekst'].' = <strong>ok</strong>';
    }

    else
    {
        echo $_POST['tekst'].' = <strong>niet ok</strong>';
    }
}

echo'
    <h3>vul bv alt 148 in en submit</h3>
    <form action="'
.$_SERVER['PHP_SELF'].'" method="POST">
    <input type="text" name="tekst">
    <input type="submit" value="submit">
    </form>
'
;
?>



thx El G
Gewijzigd op 19/06/2010 16:58:51 door El Grimbo
 
PHP hulp

PHP hulp

25/12/2024 08:38:54
 
Piet Verhagen

Piet Verhagen

19/06/2010 20:04:03
Quote Anchor link
En als je doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(test(utf8_decode($_POST['tekst'])))

?
 
El Grimbo

El Grimbo

20/06/2010 16:16:03
Quote Anchor link
Dank je Piet,
Dit werkt top (al begrijp ik nog steeds niet wat er precies gebeurt).

Alleen ontdekte ik dat ik ook het euro teken (ascii 0128) wil toestaan.
Utf8_decode kan daar niet mee overweg.
Vooralsnog geeft het (op de juiste plaats) toevoegen van de regel :
$_POST['tekst'] = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $_POST['tekst']);
goede resultaten. (en € in de pregmatch string opnemen natuurlijk)
Gewijzigd op 20/06/2010 16:17:57 door El Grimbo
 
Piet Verhagen

Piet Verhagen

20/06/2010 17:32:20
Quote Anchor link
Utf8_decode maakt van een UTF8 encoded string een ISO-8859-1(westeuropees) encoded string. Het euro teken komt echter niet voor in ISO-8859-1 karakterset. Zo simpel is dat :)

Even een vraag, waarom wil je überhaupt testen op die vreemde tekens? Wat is er mis met die tekens?
Gewijzigd op 20/06/2010 20:28:36 door Piet Verhagen
 
Afra ca

Afra ca

20/06/2010 20:44:28
Quote Anchor link
Ah, werken met unicode is altijd een pain in the ass

leesvoer: klik

Wil je unicode werken, kijk bijvoorbeeld hier eens om te zien waar je rekening mee kunt houden. En kijk hier.
 



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.