wat gebeurt er met bv ö door POST en?
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?
thx El G
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)
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
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>
';
?>
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
Gesponsorde koppelingen:
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)
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
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?
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
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.
leesvoer: klik
Wil je unicode werken, kijk bijvoorbeeld hier eens om te zien waar je rekening mee kunt houden. En kijk hier.



