Hei,
hab ein kleines PHP-Problem.
In einem Array sind Dateinamen gespeichert mit unterschiedlichen Dateiendungen:
z.B.
$var = array ( 'datei-1.jpg', 'datei-2.pdf', 'datei-3.pdf', 'datei-4.doc', 'datei-5.jpg' );
Nun sollen alle JPGs herausgefiltert und in einem neuen Array gespeichert werden.
Wer kann mir helfen?!
VG Chris
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
-
- Beiträge: 146
- Registriert: 20. Mär 2007, 10:08
- Wohnort: Tampere/ Finnland
- Kontaktdaten: Website
- timo.huber
- Beiträge: 305
- Registriert: 22. Dez 2009, 13:26
Hoi,
es gibt noch viele weitere Möglichkeiten
mfg
Code: Alles auswählen
<?php
$var = array ( 'datei-1.jpg', 'datei-2.pdf', 'datei-3.pdf', 'datei-4.doc', 'datei-5.jpg' );
$varNeu = array();
foreach ($var as $eintrag)
{
if (substr($eintrag, -4, 4) == '.jpg')
$varNeu[] = $eintrag;
}
echo '<pre>';
print_r($varNeu);
echo '</pre>';
echo '<hr />';
function call($eintrag)
{
if (substr($eintrag, -4, 4) == '.jpg')
return true;
else
return false;
}
$varNeu = array_filter($var, 'call');
echo '<pre>';
print_r($varNeu);
echo '</pre>';
?>
es gibt noch viele weitere Möglichkeiten
mfg
$glaskugel = new rex_glaskugel();
$loesung = $glaskugel->getLoesung("problem");
foreach ($loesung as $l)
{
echo $l;
}
$loesung = $glaskugel->getLoesung("problem");
foreach ($loesung as $l)
{
echo $l;
}
Vielleicht Variante2 in kurz:timo.huber hat geschrieben: es gibt noch viele weitere Möglichkeiten
Code: Alles auswählen
<?php
function jpg_filter($file)
{
return preg_match('/\.jpg$/',$file);
}
$var = array ('datei-1.jpg', 'datei-2.pdf', 'datei-3.pdf', 'datei-4.doc', 'datei-5.jpg' );
$jpgFiles = array_filter($var,'jpg_filter');
print_r($jpgFiles);
?>
Gruß
Peter
- Richard.Laing
- Beiträge: 2105
- Registriert: 28. Aug 2005, 00:55
- Wohnort: Brühl / Rheinland
- Kontaktdaten: Website
hi
ich muß mich mal einklinken
was ist eigendlich der unterschied zwischen
print und print_r
kapier ich net... ist da überhaupt ein unterschied...
nur mal so weil ich keine ahnung habe davon evtl. hilft es mir ja auch ma zu verstehen wie das mit dem php so geht
gruß richy
ich muß mich mal einklinken
was ist eigendlich der unterschied zwischen
print und print_r
kapier ich net... ist da überhaupt ein unterschied...
nur mal so weil ich keine ahnung habe davon evtl. hilft es mir ja auch ma zu verstehen wie das mit dem php so geht
gruß richy
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
- timo.huber
- Beiträge: 305
- Registriert: 22. Dez 2009, 13:26
Hoi Richard,
also print ist eine alternative zu echo. print gibt aber einen Wert zurück (1).
print_r wird meistens zum debuggen bebutzt. Man kann sich damit z.b. Einträge von Arrays sehr schön dargestellt ausgeben lassen und sich einen Überblick über die Inhalte machen.
mfg
also print ist eine alternative zu echo. print gibt aber einen Wert zurück (1).
print_r wird meistens zum debuggen bebutzt. Man kann sich damit z.b. Einträge von Arrays sehr schön dargestellt ausgeben lassen und sich einen Überblick über die Inhalte machen.
mfg
$glaskugel = new rex_glaskugel();
$loesung = $glaskugel->getLoesung("problem");
foreach ($loesung as $l)
{
echo $l;
}
$loesung = $glaskugel->getLoesung("problem");
foreach ($loesung as $l)
{
echo $l;
}
-
- Beiträge: 146
- Registriert: 20. Mär 2007, 10:08
- Wohnort: Tampere/ Finnland
- Kontaktdaten: Website
jpg und JPG
Hei, vielen Dank für die Antworten!
Ich habe gleich die erste lösung genommen und sie funktioniert soweit.
Nun sollen aber .jpg und .JPG (also einmal gross und einmal klein geschrieben) gleich behandelt werden.
In einem Ordner auf dem Webserver liegen Dateien unterschiedlichen Formats, also .jpg, .JPG, .doc, .pdf usw.
Das Skript soll sich alle .jpg und .JPG aus diesem Ordner herausangeln und daraus im Frontend eine Bildergalerie erzeugen.
Wenn ich .jpg einsetze, klappts, aber wenn ich .jpg durch .JPG ersetze, werden weder .jpg noch .JPG-Dateien ausgegeben.
Ich habe gleich die erste lösung genommen und sie funktioniert soweit.
Nun sollen aber .jpg und .JPG (also einmal gross und einmal klein geschrieben) gleich behandelt werden.
In einem Ordner auf dem Webserver liegen Dateien unterschiedlichen Formats, also .jpg, .JPG, .doc, .pdf usw.
Das Skript soll sich alle .jpg und .JPG aus diesem Ordner herausangeln und daraus im Frontend eine Bildergalerie erzeugen.
Wenn ich .jpg einsetze, klappts, aber wenn ich .jpg durch .JPG ersetze, werden weder .jpg noch .JPG-Dateien ausgegeben.
-
- Beiträge: 146
- Registriert: 20. Mär 2007, 10:08
- Wohnort: Tampere/ Finnland
- Kontaktdaten: Website
- Richard.Laing
- Beiträge: 2105
- Registriert: 28. Aug 2005, 00:55
- Wohnort: Brühl / Rheinland
- Kontaktdaten: Website
hi timo
das mit print und echo war mir klar
aber print_r dafür danke ich dir auch mal wieder gut zu wissen
gruß richy
das mit print und echo war mir klar
aber print_r dafür danke ich dir auch mal wieder gut zu wissen
gruß richy
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Dann vielleicht doch besser die Variante mit regulärem Ausduck:
Entgegen der Variante oben, werden durch hinzufügen des '/\.jpg$/i' Groß- und Kleinschreibung ignoriert. Beide Schreibweisen .jpg und .JPG werden also in das neue Array zurück gegeben.
Gruß
Peter
Code: Alles auswählen
<?php
function jpg_filter($file)
{
return preg_match('/\.jpg$/i',$file);
}
$var = array ('datei-1.jpg', 'datei-2.pdf', 'datei-3.pdf', 'datei-4.doc', 'datei-5.JPG' );
$jpgFiles = array_filter($var,'jpg_filter');
print_r($jpgFiles);
?>
Gruß
Peter
-
- Beiträge: 146
- Registriert: 20. Mär 2007, 10:08
- Wohnort: Tampere/ Finnland
- Kontaktdaten: Website
Ok, den Fehler habe ich jetzt selbst gefunden, dass es mit JPG (gross geschrieben) nicht klappte...
ich habs jetzt einfach so gemacht:
Sieht für einen PHP-Profi vielleicht etwas unelegant aus, aber es funzt...
Peter, danke nochmal für deine Antwort! ich war hier gerade am schreiben als deine Antwort kam!
ich habs jetzt einfach so gemacht:
Code: Alles auswählen
$jpg = array();
foreach ($ggFiles as $eintrag){
if (substr($eintrag, -4, 4) == '.JPG')
$jpg[] = $eintrag;
if (substr($eintrag, -4, 4) == '.jpg')
$jpg[] = $eintrag;
}
Peter, danke nochmal für deine Antwort! ich war hier gerade am schreiben als deine Antwort kam!
- timo.huber
- Beiträge: 305
- Registriert: 22. Dez 2009, 13:26
Hoi,
das funktioniert natürlich.
Nur als Anmerkung und weitere Lösung (neben deiner und der von Peter) kannst du auch einfach die Eingabe (Dateiname) in Kleinbuchstaben umwandeln.
http://de2.php.net/strtolower
Damit hast du nur eine (if) Überprüfung.
mfg
das funktioniert natürlich.
Nur als Anmerkung und weitere Lösung (neben deiner und der von Peter) kannst du auch einfach die Eingabe (Dateiname) in Kleinbuchstaben umwandeln.
http://de2.php.net/strtolower
Damit hast du nur eine (if) Überprüfung.
mfg
$glaskugel = new rex_glaskugel();
$loesung = $glaskugel->getLoesung("problem");
foreach ($loesung as $l)
{
echo $l;
}
$loesung = $glaskugel->getLoesung("problem");
foreach ($loesung as $l)
{
echo $l;
}
-
- Beiträge: 146
- Registriert: 20. Mär 2007, 10:08
- Wohnort: Tampere/ Finnland
- Kontaktdaten: Website