Avatar billede ans_dk Nybegynder
22. april 2001 - 12:08 Der er 15 kommentarer og
1 løsning

ereg og danske bogstaver ÆØÅ

hej,

ereg kan ikke spise danske bogstaver, ÆØÅ !!!

et lille eksempel:
ereg(\"^(( )*[a-zA-Z-]{2,47}){2,4}( )*$\",$name_input)


hm, skal man angive ascii # værdier i stedet for æÆøØåÅ tegn, i så fald hvilket escape tegn skal man bruge i ereg ???


mvh,
ans

PS: udvid mit eksempel !!!
Avatar billede blood Nybegynder
22. april 2001 - 12:12 #1
Æøå i html

æ = æ
Æ = Æ
ø = ø
Ø = Ø
å = å
Å = Å

Ved ikke om du kan bruge det til noget
Avatar billede erikjacobsen Ekspert
22. april 2001 - 12:18 #2
Kan du ikke bare skrive dem? Dette virker da vistnok

if (ereg(\"^[a-zæøåÆØÅ]+$\",\"blåbærgrød\"))  {
  echo \"ok\";
}
Avatar billede iss Novice
22. april 2001 - 12:21 #3
erikjacobsen -> Ja, hvis setlocal er rigtigt sat det er jo ikke sikkert....
Avatar billede erikjacobsen Ekspert
22. april 2001 - 12:22 #4
a-z har intet med setlocale at gøre. Det er altid og heldigvis a-z :)
Avatar billede iss Novice
22. april 2001 - 12:24 #5
Nu var det mere æøåÆØÅ.... For det meste er det dog kun ø jeg har haft problmer med...
Avatar billede erikjacobsen Ekspert
22. april 2001 - 12:33 #6
Jeg tror da bare man skal sikre sig at tegnsættet er ISO-8859-1 på sine HTML sider.
Og så er det ikke sikkert at eregi virker  -  så hellere bruge ereg og f.eks. skrive
a-zA-ZæøåÆØÅ og hvad man ellers vil have med. Bare sådan for en sikkerheds
skyld.
Avatar billede iss Novice
22. april 2001 - 12:35 #7
Hvis det bare var så nemt.... der findes desvære browsere som Opera, og diverse Mozilla ting som ikke helt har forstået det...
Avatar billede ans_dk Nybegynder
22. april 2001 - 12:41 #8
<?

function validate_name($name_input) { // ej A.G.T. !!!
    if (ereg(\"^(( )*[a-zæøåA-ZÆØÅ-]{2,47}){2,4}( )*$\",$name_input)) {
    $tmpVar=trim($name_input);
    $str_len=strlen($tmpVar);
    if ($str_len>5 && $str_len<50)
      return $tmpVar;
    }
    else
      return \"0\";
}
$tst=\"æøå ÆØÅ\";
$resVar=validate_name($tst);
print \"validate_name(\" . $tst . \")=\".\"$resVar\";

?>

virker !!!!!

_MEN_

function validate_name2($name_input) { // ej A.G.T. !!!
    if (ereg(\"^(( )*[a-åA-Å-]{2,47}){2,4}( )*$\",$name_input)) {
    $tmpVar=trim($name_input);
    $str_len=strlen($tmpVar);
    if ($str_len>5 && $str_len<50)
      return $tmpVar;
    }
    else
      return \"0\";
}

VIRKER IKKE !!!

Avatar billede ans_dk Nybegynder
22. april 2001 - 12:46 #9
det var ikke mening at erikjakobsen skal have hele 30 .. men blot 10

do\'h fejl ,,,

men never mind ... det var ikke lige frem 30$ han fik

**ggg*

tak for hjælp, til at selv finde fejlen, *ggg*

d;-))
Avatar billede erikjacobsen Ekspert
22. april 2001 - 13:21 #10
Så kan du jo få forklaringen på hvorfor a-åA-Å ikke virker. Det er fordi æ, ø og å
ikke ligger umiddelbart efter z i ASCII/ISO-tegnsættet. Et regulært udtryk som
\"tegn-tegn\" bruger netop tegnsættet. Nu ligger æ, ø og å over ordinal værdi 127, og
ikke engang i rækkefølge. Med a-å får du derfor ikke både ø og æ med (husker ikke
lige hvilke), og en masse andre bogstaver. Det er altså helt forkert - men du har
jo fundet løsningen. Brug bare den. Hmm, og så er der jo lige Schlüter, og Jännsson,
og Juliète og ....

Vil du have 20 point retur, kan vi mødes en dunkel nat i en ensom gyde og udveksle
dem. Ok?
Avatar billede ans_dk Nybegynder
22. april 2001 - 15:16 #11
erikjakobsen>> uuuuuhh, hvor er jeg bange !!!!

d:o)) *ggg*

men alt det du sagde, det viste jeg også selv .. jeg skulle bare tænke mig lidt om, INDEN jeg spurgte andre !

never mind,
der vil sikkert være nogle som vil have nytte af svarene ...
trods alt er det derfor man har eksperten.dk ,,,,,,,

blot en afsluttende bemærkning til dem som evt. kommer til at bruge noget af svaret::::
funktionen kan tunes lidt (skrives lidt smartere, ved at have en pre-defineret værdi at et argument som indeholder de danske bogstaver) .... husk endligt også ü,é,è ... dem tog jeg ikke med, i første omgang ....

mvh,
ans
Avatar billede ans_dk Nybegynder
22. april 2001 - 15:23 #12
tja, jeg har vist nok også glemt

öáà

hmmm, åæø üéè öáà .... der kan ikke være flere ... tror jeg nok ...

mvh,
ans
Avatar billede erikjacobsen Ekspert
22. april 2001 - 16:57 #13
Man kunne vist også (har ikke lige tabellen ved hånden) skrive a-zA-ZÇ-Ñ og
så få den allesammen med. Ç svarer til ordinalværdi 128 og Ñ til 165 og alle
normale (men tilstrækkeligt unormale) skulle ligge herimellem. Men check det
lige mod ISO-8859-1 hvis du skal bruge det for alvor.
Avatar billede ans_dk Nybegynder
23. april 2001 - 20:37 #14
ok ... her sourcet .... gratiz d:-))

<?
error_reporting (E_ALL); // report all PHP errors

$arrTestAllCases
  =array(\"\",
    \" \",
    \"                                                              \",
    \" a\",
    \"  aa aa \",
    \" aa aa aa \",
    \" @3847849¤\",
    \"  23 aa aa  \",
    \" aa aa a!a\",
    \"    ajajaj æøåÆØÅ  ÇüéäàåçëèïìÄÅÉæÆöòùÿÖÜáíóú  O\'Niell  \"
    );
             
print \"<HTML><BODY>\";
for ($i=0; $i<count($arrTestAllCases); $i++)
{
    $test=$arrTestAllCases[$i];
    $resVar=validate_name($test);
   
    print \"<P><PRE>validate_name(&quot;\";
    print $test;
    print \"&quot;)=&quot;\";
    print $resVar;
    print \"&quot;</PRE></P>\";
}
print \"</BODY></HTML>\";

?>

<?
/* Copyright (c) G-Solutions. All rights reserved.
* http://www.g-solutions.dk
*
* Redistributions of this source code must retain the above copyright
* notice, and the following disclaimer.

  Disclaimer:

  THIS SOFTWARE IS PROVIDED BY G-SOLUTIONS (DENMARK) ``AS IS\'\' AND ANY
  EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL G-SOLUTIONS (DENMARK)
  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
  OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  SUCH DAMAGE.

*/

/*
$other_ibm_chars=\"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜáíóúñÑ\";
//are those we picked up from: LaFore, Robert, \"Object-Oriented Programming
//in C++\", 3rd Ed., 1999, Sams, ISBN 0-57169-160-X (Appendix A, p.777-p.786),
//and we think that they (or at least some of them) should be used when
//validating names provided by end-user !

$extra_1s=\"ØøÝýÐßð\'\";
//are those we found elsewhere and added to make the list even more complete !
*/
function validate_name($name_input,
              $other_ibm_chars=\"ÇüéäàåçëèïìÄÅÉæÆöòùÿÖÜáíóú\",
              $extra_1s=\"ØøÝýß\'\")
{
    // make sure that arguments $other_ibm_chars and $extra_1s
    // do NOT include SPACE !!!!
   
    // if you encounter errors try to check charset
    // in your PHP Configuration File (php.ini) !!!
    // tip: try using phpinfo(ALL_INFO); !
    // Chars used as function arguments must be included in charset used
    // by PHP !
   
    if (ereg(\"^(( )*[A-Za-z\". $other_ibm_chars
        . $extra_1s .\"-]{2,47}){2,4}( )*$\",
        $name_input)
    )
    {   
    $tmpVar=trim(eregi_replace(\" +\", \" \",$name_input));
    $str_len=strlen($tmpVar);
    if ($str_len>=5 && $str_len<=50)
      return $tmpVar;
    else
      return \"0\";
    }
    else
      return \"0\";
}
/*
* The end of source code copyrighted by G-Solutions
*/
?>
Avatar billede ans_dk Nybegynder
23. april 2001 - 20:44 #15
erikjacobsen>> hmmm, jeg tror det er sikkrest at angive alle bogstaver man vil tillade. HVIS serveren ikke benytter den same charset, tja, så vil man risikere at nogle uønskede chars også kom med, hvilket vil være yderst uheldigt ,,,,

det var så mit første (u)seriøse bidrag til eksperten.dk  ***gggg***

ahhhh, bar jeg havde tid til det her ......

har deadline d.26-5 ...
gotta go !!!!

mvh,
ans
Avatar billede erikjacobsen Ekspert
23. april 2001 - 20:54 #16
I princippet har du ret, ans_dk. Men hvor mange bruger en IBM Mainframe med
EBCDIC til webserver i dag? Og tak for den umådeligt venligtsindede handling at
vise os dit flotte slutresultat. Er der for få eller for mange bogstaver efter andres
mening, er det jo nemt at rette til.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester