Angabe aus einem String Filtern?
Sneap
- php
0 Edgar Ehritt0 Sneap0 Edgar Ehritt0 Sneap0 Edgar Ehritt0 Sneap
0 EKKi
Hallo Leute,
ich hab da ein Problem und zwar würde ich gerne eine Angabe aus einem String filtern. Ich hab auch schon einwenig gegooglet aber nicht gefunden was mir vernünftig Helfen würde.
Also ich würde gerne aus diesem String, die Breite auschneiden (nur die Zahl):
<?php
$string = 'Breite: 0%';
?>
~~~ich weiß das es mit stristr gehen soll, aber leider weiß ich nicht wie genau. Wie kann ich ihm sagen, er soll nur das zwischen Breite: und % ausschneiden?
Danke schon mal für eure Hilfe.
Mfg Sneap
Hallo Sneap,
googeln ist bei nicht wenigen Problemen, die mit PHP(-Programmierung) in Verbindung stehen, blödsinnig.
ich weiß das es mit stristr gehen soll,
Es ist besser, eine Funktion zu haben...
aber leider weiß ich nicht wie genau.
...und die Beschreibung dieser Funktion zu konsultieren. Es hilft nichts, es hilft Dir gar nichts. Die Funktionen für Strings, Arrays und Optionen/Informationen sollte man kennen, wenn nicht sogar auswendig daherbeten können sollen.
Wie kann ich ihm sagen, er soll nur das zwischen Breite: und % ausschneiden?
Du hast also die Zeichenkette 'Breite: 0%'
vorgegeben.
'Breite: 0%'
--> $string=stristr($string, ' ');
Breite:' 0%'
--> $string=stristr($string, '%', true); /* ab Version 5.3 */
Breite:' 0'
% --> $string=trim($string);
Breite: '0'
%
Gruß aus Berlin!
eddi
Ahhh jetzt hab ich das verstanden, das einzigste Problem was ich jetzt habe ist, ich hab PHP Version 5.2.0-8+etch15
Wie muß ich das den dann da machen, weil das geht das ja nicht (weil ab Version 5.3):
<?php
$clean=stristr($result, '%', true);
?>
~~~gibt es dafür eine Alternative?
Sneap
Re:
gibt es dafür eine Alternative?
Ja, nur wirst Du die nicht finden, wenn Du hier fragst, statt endlich mit dem Lesen der String-Funktionen zu beginnen. Mit anderen Worten: Höre auf, hier im Forum nach Fischen zu fragen! Greife endlich zu den Dir schon längst gereichten Angeln!
Gruß aus Berlin!
eddi
Re:
gibt es dafür eine Alternative?
Ja, nur wirst Du die nicht finden, wenn Du hier fragst, statt endlich mit dem Lesen der String-Funktionen zu beginnen. Mit anderen Worten: Höre auf, hier im Forum nach Fischen zu fragen! Greife endlich zu den Dir schon längst gereichten Angeln!
Gruß aus Berlin!
eddi
Oh sorry war ich wohl etwas zu vorschnell.
Also ich hab eine Lösung gefunden und zwar so:
<?php
$p = preg_match('/Breite: ([0-9]+)/',$result,$m);
if($p == 1) {
$clean = (int)$m[1];
echo 'Breite: '.$clean.'%';
}else{
echo 'Konnte Breitenicht auslesen.';
}
?>
~~~das habe ich ja so gerade noch hinbekommen, jetzt wollte ich das gleich für folgenden String machen:
€17,93
Dowrt wollt ich nur den Wert vor dem , auslesen aber leider weiß ich nicht welche zeichen ich dafür verwenden muss.
Ich hatte gedacht so geht es vll, aber das ist nicht richtig:
~~~php
<?php
$g = preg_match('/€ ([0-9]+),/',$result,$n);
if($g == 1) {
$cash = (int)$n[1];
echo $cash;
}else{
echo 'Konnte Geld nicht auslesen.';
}
?>
~~~wie muß ich den Ausdruck als Zeichenkette schreiben, das er mir nur das groß Geld ausgibt?
Re:
Also ich hab eine Lösung gefunden und zwar so:
<?php
$p = preg_match('/Breite: ([0-9]+)/',$result,$m);
if($p == 1) {
$clean = (int)$m[1];
echo 'Breite: '.$clean.'%';
}else{
echo 'Konnte Breitenicht auslesen.';
}
?>
Na Klasse. Statt erstmal zu versuchen in der Sprache PHP Fuß zu fassen, suchst Du nun doch lieber bei google, was Dein unmittelbares Problem löst. Hey, Du solltest Bundespolitiker werden. Die sind genauso drauf.
> das habe ich ja so gerade noch hinbekommen,
Wo ist dann das Problem für Dich, wenn Du mit dem pattern `'/Breite: ([0-9]+)/'`{:.language-php} umgehen kannst...
> €17,93
...herauszufiltern?
> Ich hatte gedacht so geht es vll, aber das ist nicht richtig:
Ich weiß nicht, warum Du so stur bist und einfach nur apportierst.
Lies Dich bitte erst in die Materie [Reguläre Ausdrücke](http://de2.php.net/manual/de/reference.pcre.pattern.syntax.php) ein, wenn Du ein Grundverständnis von Zeichenkettenverarbeitung entwickelt hast, und Dir klar ist, welche Merkmale eine ganze Klasse von zu findenden Teilzeichenketten hat, die Du herausfiltern. Dazu sollte man aber den Ausdruck, den man herausfiltern will, mittels der String-Funktionen auch so aufspüren können. Nehmen wir also das erste Beispiel:
`'Breite: [Ziffer]%'`{:.language-php}
Es kann gesagt werden, dass `'[Ziffer]'`{:.language-php} immer nach dem ersten Leerzeichen auftritt:
`$string=stristr($string, ' ');`{:.language-php}
Es kann gesagt werden, dass `'[Ziffer]'`{:.language-php} immer vor dem ersten Prozentzeichen auftritt:
`$string=stristr($string, '%', true);`{:.language-php}
So, und nun hast Du die Zeichenkette `'€17,93'`{:.language-php}. Es kann gesagt werden:
- Sie beginnt immer mit `'€'`{:.language-php}
- Sie enthält ein Komma
- Sie hat vor dem Komma mindestens eine Ziffer
- Sie hat hinter dem Komma Ziffern
Gruß aus Berlin!
eddi
--
Sich einem Ziel zu verschreiben, sollte ein Prüfen der damit verbundenen Intension und ein Überprüfen der einzusetzenden Mittel vorangehen, sonst türmen sich immer wieder Wolkenschlösser auf, von denen aus zwar herabgesehen wird. Die aber mit einem Blick auf die Basis zerfallen.
Wo ist dann das Problem für Dich, wenn Du mit dem pattern
'/Breite: ([0-9]+)/'
umgehen kannst...€17,93
...herauszufiltern?
Wenn man die Ausdrück nicht weiß bzw weiß wo man sie findet ist es etwas schweirig.
Lies Dich bitte erst in die Materie Reguläre Ausdrücke ein
Das ist die Seite die ich gesucht aber nit gefunden habe.
Da mit werd ich das wohl hinbekommen.
'Breite: [Ziffer]%'
Es kann gesagt werden, dass
'[Ziffer]'
immer nach dem ersten Leerzeichen auftritt:
$string=stristr($string, ' ');
Es kann gesagt werden, dass
'[Ziffer]'
immer vor dem ersten Prozentzeichen auftritt:
$string=stristr($string, '%', true);
So, und nun hast Du die Zeichenkette
'€17,93'
. Es kann gesagt werden:- Sie beginnt immer mit
'€'
- Sie enthält ein Komma
- Sie hat vor dem Komma mindestens eine Ziffer
- Sie hat hinter dem Komma Ziffern
Ich würde
$string=stristr($string, '%', true);
ja gerne nutzen, aber wie schon erwähnt hab ich kein PHP 5.3
Re:
Wenn man die Ausdrück nicht weiß bzw weiß wo man sie findet ist es etwas schweirig.
Da bin ich mit meiner Geduld und Hilfsbereitschaft dann am Ende: Lies zum Verständnis Deines Problems die String-Funktionen!
aber wie schon erwähnt hab ich kein PHP 5.3
Wie schon durchblickte, gibt es von mir Hilfe zu Selbshilfe, nicht zur Egomanie.
Gruß aus Berlin!
eddi
Mahlzeit Sneap,
<?php
$string = 'Breite: 0%';
?>
ich weiß das es mit stristr gehen soll, aber leider weiß ich nicht wie genau.
Da Du nicht genau beschreibst, was Dein eigentliches Problem ist, kann ich Dir auch dieser Stelle auch nur sagen: es könnte gehen. Wenn man die genannte Funktion richtig anwendet. Oder auch andere String-Funktionen ...
Wie kann ich ihm sagen, er soll nur das zwischen Breite: und % ausschneiden?
Indem Du die Positionen der Teilstrings 'Breite: ' und '%' herausfindest, einige einfache mathematische Operationen durchführst und anschließend den gewünschten Teil einfach ausschneidest.
Alternativ könntest Du natürlich reguläre Ausdrücke benutzen, um alles, was eine Ziffer ist, aus dem String zu extrahieren.
Was genau ist Dein Problem?
MfG,
EKKi