. und integer

. und integer

am 31.08.2006 10:44:15 von letters

Hallo,

wieso ergibt die Frage
if(!is_integer($tempInt))
ein false obwohl $tempInt einen . enthält?

.. ist doch kein Integer, oder?

Mathias

Re: . und integer

am 31.08.2006 12:11:15 von Gregor Kofler

Mathias Fiedler meinte:
> Hallo,
>
> wieso ergibt die Frage
> if(!is_integer($tempInt))

^
steht das wirklich da? Also is_int($tempInt) liefert true?

> ein false obwohl $tempInt einen . enthält?

Dann kann ich das nicht nachvollziehen.

print_r(is_int(0)); => 1
print_r(is_int(1.0)); => {leerer String}
print_r(is_int('0.0')); => s.o.

> . ist doch kein Integer, oder?

Nein, ein String.

Wenn kein Fehler in deinem Skript, evtl. ein PHP-Bug?

Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: . und integer

am 31.08.2006 14:23:14 von letters

Am Thu, 31 Aug 2006 12:11:15 +0200 schrieb Gregor Kofler:

> Mathias Fiedler meinte:
>> Hallo,
>>
>> wieso ergibt die Frage
>> if(!is_integer($tempInt))
>
> ^
> steht das wirklich da? Also is_int($tempInt) liefert true?
>
>> ein false obwohl $tempInt einen . enthält?
>
> Dann kann ich das nicht nachvollziehen.
>
> print_r(is_int(0)); => 1
> print_r(is_int(1.0)); => {leerer String}
> print_r(is_int('0.0')); => s.o.
>
>> . ist doch kein Integer, oder?
>
> Nein, ein String.
>
> Wenn kein Fehler in deinem Skript, evtl. ein PHP-Bug?
>
> Gregor

Es ist tatsächlich so.
Allerdings dene ich mal, es liegt an mir. In dem Array befinden sich Worte
und Zahlen. Der erste Eintrag ist ein Wort. Ich denke mal, das deshalb das
ganze Array automatisch als String geführt wird.

Ich habe es jetzt so:
//den Type jeder Tabellenspalte festlegen
$muster = '/[0-9][^a-zA-Z][^.:,-_|]/';
for($i = 0; $i < count($type_array_temp); $i++)
{
if($type_array_temp[$i] != "" && $type_array_temp[$i] != "\r\n")
{
$isInt = 0;

if(!preg_match($muster, $type_array_temp[$i]))
{
$isInt = 1;
}

if($isInt == 0)
{
$type_array[$i] = "longtext NOT NULL";
}else
{
$type_array[$i] = "bigint(10) NOT NULL default '0'";
}
} else
{
$type_array[$i] = "varchar(6) NOT NULL default 'leer'";
}

}
Es geht dabei darum, eine mysql Tabelle anzulegen.
Das funktioniert.
Allerdings habe ich da das nächste Problem. Ich wollte einen regulären
Ausdruck erstellen, der das Feld auf Zahlen prüft. Es dürfen nur Zahlen
drinstehen, kein Punkt, keine Sonderzeichen, keine Buchstaben. (Ich weis
der Ausdruck ist noch nicht vollständig).
Nach meiner Überlegung sollte preg_match doch einen Treffer landen, wenn
der Ausdruck getroffen ist. Dsa richtige Ergebnis erhalte ich aber erst mit
der Verneinung. Nun stimmt zwar meine Abfrage, aber ich weis nicht warum.

Mathias

Re: . und integer

am 31.08.2006 14:35:17 von Gregor Kofler

Mathias Fiedler meinte:

[snip]

> Allerdings habe ich da das nächste Problem. Ich wollte einen regulären
> Ausdruck erstellen, der das Feld auf Zahlen prüft. Es dürfen nur Zahlen
> drinstehen, kein Punkt, keine Sonderzeichen, keine Buchstaben. (Ich weis
> der Ausdruck ist noch nicht vollständig).

/^[0-9]+$/

Such dir doch ein Tool zum Testen von RegEx. "RegExCoach" (oder so
ähnlich), ich verwende ein RegEx-Plugin in Eclipse.

Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: . und integer

am 31.08.2006 14:35:30 von Sebastian Wessel

Mathias Fiedler schrieb:
> Am Thu, 31 Aug 2006 12:11:15 +0200 schrieb Gregor Kofler:
>
>> Mathias Fiedler meinte:
>>> Hallo,
>>>
>>> wieso ergibt die Frage
>>> if(!is_integer($tempInt))
>> ^
>> steht das wirklich da? Also is_int($tempInt) liefert true?
>>
>>> ein false obwohl $tempInt einen . enthält?
>> Dann kann ich das nicht nachvollziehen.
>>
>> print_r(is_int(0)); => 1
>> print_r(is_int(1.0)); => {leerer String}
>> print_r(is_int('0.0')); => s.o.
>>
>>> . ist doch kein Integer, oder?
>> Nein, ein String.
>>
>> Wenn kein Fehler in deinem Skript, evtl. ein PHP-Bug?
>>
>> Gregor
>
> Es ist tatsächlich so.
> Allerdings dene ich mal, es liegt an mir. In dem Array befinden sich Worte
> und Zahlen. Der erste Eintrag ist ein Wort. Ich denke mal, das deshalb das
> ganze Array automatisch als String geführt wird.

Was sagt denn var_dump($array)?


--
MfG Sebastian Wessel

"Wer Dich wegen deines Hemdes verprügelt ist nicht dein Freund."
(March Simpson)

Re: . und integer

am 31.08.2006 14:38:53 von Helmuth Gronewold

Hi Mathias,

Mathias Fiedler schrieb:
> $muster = '/[0-9][^a-zA-Z][^.:,-_|]/';
reicht da nicht sowas wie '/[\d]+/'?


Gruß Helmuth

Re: . und integer

am 31.08.2006 14:53:42 von Knut Kohl

Hallo Helmuth,

Helmuth Gronewold schrieb am 31. Aug 2006 in de.comp.lang.php.misc:

> Hi Mathias,

> Mathias Fiedler schrieb:
>> $muster = '/[0-9][^a-zA-Z][^.:,-_|]/';
> reicht da nicht sowas wie '/[\d]+/'?

Da reicht sogar '/\d+/' :-)

> Gruß Helmuth

Knut

--

Newsoffice.de - Die Onlinesoftware zum Lesen und Schreiben im Usenet

Re: . und integer

am 31.08.2006 15:37:21 von Joerg Behrens

Mathias Fiedler schrieb:
> Am Thu, 31 Aug 2006 12:11:15 +0200 schrieb Gregor Kofler:
>
>> Mathias Fiedler meinte:
>>> Hallo,
>>>
>>> wieso ergibt die Frage
>>> if(!is_integer($tempInt))
>> ^
>> steht das wirklich da? Also is_int($tempInt) liefert true?


Alternativ moechte ich das Augenmerk auf die ctype_* Funktionen lenken.

Gruss
Joerg

--
TakeNet GmbH http://www.takenet.de
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025

Re: . und integer

am 31.08.2006 16:50:11 von Michael Jostmeyer

Gregor Kofler schrieb:
> Mathias Fiedler meinte:
>
> [snip]
>
>> Allerdings habe ich da das nächste Problem. Ich wollte einen regulären
>> Ausdruck erstellen, der das Feld auf Zahlen prüft. Es dürfen nur Zahlen
>> drinstehen, kein Punkt, keine Sonderzeichen, keine Buchstaben. (Ich weis
>> der Ausdruck ist noch nicht vollständig).
>
> /^[0-9]+$/
>
> Such dir doch ein Tool zum Testen von RegEx. "RegExCoach" (oder so
> ähnlich), ich verwende ein RegEx-Plugin in Eclipse.
Hi Gregor,

Ein RegEx-plugin hat mir schon immer gefehlt. Kannst Du mir mal den Link
oder den Namen des Plugins geben?

Gruss Josi

Re: . und integer

am 31.08.2006 16:57:21 von Gregor Kofler

Michael Jostmeyer meinte:
>
> Ein RegEx-plugin hat mir schon immer gefehlt. Kannst Du mir mal den Link
> oder den Namen des Plugins geben?

QuickREx:



Gruß, Gregor

--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: . und integer

am 31.08.2006 17:02:41 von Michael Jostmeyer

Gregor Kofler schrieb:
> Michael Jostmeyer meinte:
>>
>> Ein RegEx-plugin hat mir schon immer gefehlt. Kannst Du mir mal den Link
>> oder den Namen des Plugins geben?
>
> QuickREx:
>
>
>
> Gruß, Gregor
>
und schon installiert :-)
Dankeschön!

Gruss Josi

Re: . und integer

am 31.08.2006 18:30:48 von letters

Am Thu, 31 Aug 2006 14:53:42 +0200 schrieb Knut Kohl:

> Hallo Helmuth,
>
> Helmuth Gronewold schrieb am 31. Aug 2006 in de.comp.lang.php.misc:
>
>> Hi Mathias,
>
>> Mathias Fiedler schrieb:
>>> $muster = '/[0-9][^a-zA-Z][^.:,-_|]/';
>> reicht da nicht sowas wie '/[\d]+/'?
>
> Da reicht sogar '/\d+/' :-)

Kannst Du mir das erklären?
\d Dezimalziffer ok
aber das +
heist das nicht, das jedes Zeichen mind. 1 mal vorkommen muß? Oder bedeutet
das, irgendein Zeichen das Ausdrucks muß mind. 1 mal vorkommen?
Mal abgesehen davon, das mein Ausdruck zu lang ist, ist er nun richtig oder
nicht?
>
>> Gruß Helmuth
>
> Knut

Re: . und integer

am 31.08.2006 21:06:23 von Gregor Kofler

Mathias Fiedler meinte:
> Am Thu, 31 Aug 2006 14:53:42 +0200 schrieb Knut Kohl:
>
>> Hallo Helmuth,
>>
>> Helmuth Gronewold schrieb am 31. Aug 2006 in de.comp.lang.php.misc:
>>
>>> Hi Mathias,
>>> Mathias Fiedler schrieb:
>>>> $muster = '/[0-9][^a-zA-Z][^.:,-_|]/';
>>> reicht da nicht sowas wie '/[\d]+/'?
>> Da reicht sogar '/\d+/' :-)
>
> Kannst Du mir das erklären?
> \d Dezimalziffer ok
> aber das +
> heist das nicht, das jedes Zeichen mind. 1 mal vorkommen muß?

Seufz... Irgendeines.


(nochmals) lesen. Mit dem vorgeschlagenen Tool dann einfach probieren
und verstehen.

Gruß, Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: . und integer

am 04.09.2006 07:32:10 von letters

Am Thu, 31 Aug 2006 21:06:23 +0200 schrieb Gregor Kofler:

> Mathias Fiedler meinte:
>> Am Thu, 31 Aug 2006 14:53:42 +0200 schrieb Knut Kohl:
>>
>>> Hallo Helmuth,
>>>
>>> Helmuth Gronewold schrieb am 31. Aug 2006 in de.comp.lang.php.misc:
>>>
>>>> Hi Mathias,
>>>> Mathias Fiedler schrieb:
>>>>> $muster = '/[0-9][^a-zA-Z][^.:,-_|]/';
>>>> reicht da nicht sowas wie '/[\d]+/'?
>>> Da reicht sogar '/\d+/' :-)
>>
>> Kannst Du mir das erklären?
>> \d Dezimalziffer ok
>> aber das +
>> heist das nicht, das jedes Zeichen mind. 1 mal vorkommen muß?
>
> Seufz... Irgendeines.
>
Danke.

Mathias
>
> (nochmals) lesen. Mit dem vorgeschlagenen Tool dann einfach probieren
> und verstehen.
>
> Gruß, Gregor