Strings mit Umlauten vergleichen (insb. array_search())

Hi.

Gibt es eine Methode um Strings mit Umlauten zu vergleichen (z.B.
"unregelmäßig"). Dies funktioniert weder mit array_search(), noch mit
einem normalen if-Statement.

MfG
Christian
Christian Bruckhoff [ Fr, 28 September 2007 13:40 ] [ ID #1832841 ]

Re: Strings mit Umlauten vergleichen (insb. array_search())

Ad 2007-09-28, Christian Bruckhoff <brchrist [at] uni-koblenz.de> dixit:

> Gibt es eine Methode um Strings mit Umlauten zu vergleichen (z.B.
> "unregelmäßig"). Dies funktioniert weder mit array_search(), noch
> mit einem normalen if-Statement.

So etwas?

<?php
$a=array('regelmäßig', 'unregelmäßig');

$s='unregelmäßig';
$t='unregelmäßig';

if ($t===$s)
{
print "Paszt.";
}

print array_search($s, $a);

?>

Tut bei mir (PHP5). Oder was ist das Problem?

Grusz,

Peter Blancke

--
Hoc est enim verbum meum!
Peter Blancke [ Fr, 28 September 2007 14:23 ] [ ID #1832842 ]

Re: Strings mit Umlauten vergleichen (insb. array_search())

Christian Bruckhoff schrieb:

> Gibt es eine Methode um Strings mit Umlauten zu vergleichen (z.B.
> "unregelmäßig").

Eine _spezielle_ Methode gibt es nicht. Ist auch nicht nötig, da die
"normalen" Methoden für Stringvergleiche idR ausreichen.

> Dies funktioniert weder mit array_search(), noch mit
> einem normalen if-Statement.

Wäre dem tatsächlich so, würde kaum eine meiner Webseiten funktionieren.
Vermutlich hast Du irgendetwas Anderes falsch gemacht.

Poste doch mal Deinen nicht funktionierenden Code.

Gruß. Claus
Claus Reibenstein [ Fr, 28 September 2007 15:02 ] [ ID #1832846 ]

Re: Strings mit Umlauten vergleichen (insb. array_search())

Hi.

Peter Blancke schrieb:
> Ad 2007-09-28, Christian Bruckhoff <brchrist [at] uni-koblenz.de> dixit:
>
>> Gibt es eine Methode um Strings mit Umlauten zu vergleichen (z.B.
>> "unregelmäßig"). Dies funktioniert weder mit array_search(), noch
>> mit einem normalen if-Statement.
>
> So etwas?
>
> <?php
> $a=array('regelmäßig', 'unregelmäßig');
>
> $s='unregelmäßig';
> $t='unregelmäßig';
>
> if ($t===$s)
> {
> print "Paszt.";
> }
>
> print array_search($s, $a);
>
> ?>

Ja.
>
> Tut bei mir (PHP5). Oder was ist das Problem?

Komisch, bei mir (auch PHP5) tuts nicht und ich überprüfe nicht mal auf
=== sondern nur auf ==. Kann das evtl. ein Problem des Encodings sein,
weil ein Wert davon aus einer DB kommt?

MfG
Christian
Christian Bruckhoff [ Fr, 28 September 2007 14:51 ] [ ID #1832847 ]

Re: Strings mit Umlauten vergleichen (insb. array_search())

Ad 2007-09-28, Christian Bruckhoff <brchrist [at] uni-koblenz.de> dixit:

> tuts nicht und ich überprüfe nicht mal auf === sondern nur auf ==.

Zeige doch mal einen Codeschnipsel her. Aehm, oder auch nicht, denn:

> Kann das evtl. ein Problem des Encodings sein, weil ein Wert davon
> aus einer DB kommt?

Klar. Umlautprobleme. Mischmasch aus UTF-8, ISO-sonstwas und dergl.
Das musz natuerlich stimmig sein. Wie wurde denn die Datenbank
befuellt? Mit dem gleichen PHP-Programm? Oder hast Du die
vonwoanders uebernommen?

Grusz,

Peter Blancke

--
Hoc est enim verbum meum!
Peter Blancke [ Fr, 28 September 2007 15:38 ] [ ID #1832848 ]

Re: Strings mit Umlauten vergleichen (insb. array_search())

Christian Bruckhoff schrieb:

> > > Gibt es eine Methode um Strings mit Umlauten zu vergleichen (z.B.
> > > "unregelmäßig"). Dies funktioniert weder mit array_search(), noch
> > > mit einem normalen if-Statement.
>
> Kann das evtl. ein Problem des Encodings sein, weil ein Wert davon aus
> einer DB kommt?

Evtl. ist der String der aus der DB kommt ja UTF-8 kodiert? Dann sind das
natürlich mehr "Zeichen", als ein String (mit Umlauten) den du in einem
Latin1 kodierten PHP-Script stehen hast.

Aber dazu musst du ja nur die 2 Strings mal mit var_dump() ausgeben, um
Sicherheit zu haben.

Gruß
Carsten
Carsten Wiedmann [ Fr, 28 September 2007 15:41 ] [ ID #1832849 ]

Re: Strings mit Umlauten vergleichen (insb. array_search())

Peter Blancke schrieb:
> Ad 2007-09-28, Christian Bruckhoff <brchrist [at] uni-koblenz.de> dixit:
>
>> tuts nicht und ich überprüfe nicht mal auf =3D=3D=3D sondern nur a=
uf =3D=3D.
>
> Zeige doch mal einen Codeschnipsel her. Aehm, oder auch nicht, denn:
>
>> Kann das evtl. ein Problem des Encodings sein, weil ein Wert davon
>> aus einer DB kommt?
>
> Klar. Umlautprobleme. Mischmasch aus UTF-8, ISO-sonstwas und dergl.
> Das musz natuerlich stimmig sein. Wie wurde denn die Datenbank
> befuellt?

Wie es in die DB gekommen ist oder was es in der DB ist kann einem doch
'fast' egal sein. Beim auslesen muss man der DB nur sagen welchen
Charset man haben moechte.

Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ Fr, 28 September 2007 17:54 ] [ ID #1832859 ]
PHP » de.comp.lang.php.misc » Strings mit Umlauten vergleichen (insb. array_search())

Vorheriges Thema: Dateiänderung bei Mehrfachzugriff
Nächstes Thema: Mehrfaches "define"