[PHP] aus einem String die letzten 4 Zeichen entfernen!

HighTec

Lieutenant
Registriert
Sep. 2006
Beiträge
761
Halli Hallo nach einer langen Zeit meld ich mich auch wieder.

Ich habe folgendes problem:

Ich möchte aus einer Variablen in der ein String gespeichert ist (Filename) die letzten 4 Zeichen (.jpg oder .gif) entfernen. Nur habe ich im mom keinerlei idee wie ich dies anstellen könnete.Ich habe auch schon gegoogelt aber nix gefunden. Würde mich freuen wenn ihr mir weiterhelfen könntet.

Schonmal Danke im Vorraus

Greetz

Highweb
 
Zuletzt bearbeitet:
Hi,
PHP:
# Zwei Dateinamen
$string1 = "bild1.jpg";
$string2 = "bild2.gif";

# Suchmuster mit ODER-Bedinnung
$suchmuster = "/\.jpg$|\.gif$/";

# Suchmuster auf alle Dateiendungen am Ende
$suchmuster = "/\..+$/";

# Suchmuster auf alle Dateiendungen am Ende mit mindestens einem und maximal 3 Buchstaben
# wegen der die vielen Edits, bin schon müde ;)
$suchmuster = "/\.\D{1,3}$/";

# Ersetzen des Suchmusters durch nix
$name1 = preg_replace($suchmuster, "", $string1);
$name2 = preg_replace($suchmuster, "", $string2);

# Debug
print $string1." : ".$name1."<br />".$string2." : ".$name2."<br />";
Gruß
 
Zuletzt bearbeitet: (Nachtrag)
Hi,

Ich bin jetzt zwar nicht so der PHP kenner, aber schau dir mal das hier näher an:

strpos(string,suchstring,[optional startpostion]); gibt die erste Position bzw. false zurueck und strrpos() fragt die letzte Position ab.

//Edit, ok da hast Du ja schon eine Lösung :)
 
Vielen Dank für die Hilfe nur ich habe da noch ein Problem:

In der Zeile mit dem Inhalt

$fileName = substr($filest, 0, -4);

zeigt er mir den Fehler
Parse error: syntax error, unexpected T_VARIABLE

Was könnte das sein
 
Alle Variablen deklariert?
Poste doch mal dein Code :)
 
Variabledeklaration entfältt bei PHP komplett ("Ausnahmen bestätigen die Regel").

Wahrscheinlich hast du einfach nur in der vorherigen Zeile das Semikolon vergessen...
 
Ok Leute ich habe den Fehlr gefunden. Es gibt jetzt zwar noch ein paar kleine Verbesserungen aber ich denke es ist soo gut wie fertig werde mich aber nochmal melden falss es Probleme gibt

Greetz

Highweb
 
Zuletzt bearbeitet:
Also die Bannerrotation funktionieert jetzt. Leider noch nicht einwandfrei, da ab und zu einfach nichts in die Variablen eingetragen wird und somit kein bild angezeigt wird.

Hier ist die Bannerrotation: Klick

Und hier ist der wichtige Code:

PHP:
<?php
##################################################
//Dateienanzahl//
$hdl=opendir('./banner'); 
$directoryCount=1; 
while($res=readdir($hdl)) 
{ 
$directoryCount++; 
} 
closedir($hdl); 
##################################################
//Dateinamen//
$fileNameplus = array();
if($ordner = dir('./banner'))
{
while($datei = $ordner->read())
{
if($datei != "." && $datei != "..") array_push($fileNameplus,$datei);
}
}
##################################################´
//Zufallsbanner//
$banner_ids = rand (1 , $directoryCount);
$banner_id = $banner_ids -1;
##################################################
//Endungen entfernen//
$filest = $fileNameplus[$banner_id];
$fileName = substr($filest, 0, -4);  
##################################################
//BannerLink erstellen//
$bannerrotation = "<a href=http://www.".$fileName."><img src=./banner/".$filest." border=0></a>";
?>
 
Weiss keiner ne Lösung????
 
Mit Sicherheit ist $directoryCount > sizeof($fileNameplus)
 
hmm normalerweise müsste es $directoryCount = $fileNameplus sein da die dateien vorher gezählt werden.

Es hat sich mittlerweile aber noch ein zweites Problem ergeben. Da ich SQL neuling bin tu ich mich gerade ein bissl schwer. Die Verbindnung scheint zu klappen.
Nun habe ich folgend Zeile in die PHP datei eingebaut und bekomme immer den fehler
unexpected T_STRING in der Zeile was könnte das sein?

INSERT wgbox (Name,EMail,Wunsch) VALUES ('einer','blablubb','nocheiner');

Und könnte man die Values auch mit Variablen ersetzen???
 
Richtig, du zählst ALLE Sachen in dem Verzeichnis vorher, packst jedoch (sinnvollerweise) "." und ".." nicht in dein Array rein. Jetzt rate mal, um wieviel $directoryCount zu groß ist.
Dein SQL-Statement sollte (wenn ich mich nicht irre) definitiv so funktionieren
PHP:
 $sql_command = "INSERT INTO wgbox (Name,EMail,Wunsch) VALUES ('".$name."','".$email."','".$wunsch."');";
 
Hallo Highweb

Das SQL-Statement sollte so sein:
Code:
$s = mysql_query("INSERT INTO `wgbox` SET `name`='".$name."', `EMail`='".$mail."', `Wunsch`='".$wunsch."'");

Grüße

tewes
 
hmmm das scheint z funktionieren ich weiss aber net ob der nun was reingeschrieben hat in der db oder nicht. Wie kann ich das denn abrufen. Bitte einmal für dumme erklären in sql bin ich newbie.

Und in der bannerrotation muss ich folglicherweise vom $directoryCount zwei abziehen aber es funzt net ich habe da schon die Befehlszeile $directoryCount -2; und habs auch schon mit $directoryCount = $directoryCount -2; und auch mit $neuevariable = $directoryCount -2; probiert aber nichts funktioniert.

Greetz

Highwéb
 
Ich sehe ja gerade, dass du $directoryCount mit 1 initialisiert hast, also noch eine Zahl zuviel... aber ich sehe auch gar keinen Grund, weshalb du diesen Unfug machst? sizeof($fileNameplus) sagt dir doch, wieviele Elemente (== Anzahl der Dateien) in deinem Array sind.
Kannst du den Fehler spezifizieren? Dein Link funktioniert ja gar nicht.

Zu deinen SQL-Fragen: Lies dir mal im Internet die gängigen Tutorials durch, z.B. dieses hier.
 
Also folgender Syntax reicht hierbei völlig: :)

PHP:
mysql_query("INSERT INTO wgbox SET name = '$name', EMail= '$mail', Wunsch = '$wunsch'");
Vorausgesetzt Du fügst das so in eine PHP-Datei. Wenn Du es direkt in die Konsole packst - also einmalig ausführst, wovon ich jetzt aber mal nicht ausgehe - sähe der Syntax ein wenig anders aus.

Zum Auslesen, ob erfolgreich der neue Eintrag erstellt worden ist, kannst Du natürlich schnell überprüfen, in dem Du auch kurz eine Query einfügst, die dir die aktuellen Datenbestände der Tabelle ausliest:

PHP:
$abfrage = mysql_query("SELECT name, EMail, Wunsch FROM wgbox");

while($ds = mysql_fetch_object($abfrage))
{
 echo "Name: ".$ds->name."<br />";
 echo "E-Mail: ".$ds->EMail."<br />";
 echo "Wunsch: ".$ds->Wunsch."<br />";
}
Zur allgemeinen Überwachung der Datenbestände in den einzelnen Datenbanken hat sich allerdings phpmyadmin ausgezeichnet, das Du einfach - wie ein Forum - auf deinen FTP Server lädst, um anschließend noch die Datenbankdaten zu hinterlegen, damit Du Zugriff auf deine Datenbank hast.
 
Zuletzt bearbeitet:
Sooo die Bannerrotation funktioniert.... An die Sache mit dem SQL werd ich mich erstmal in Ruhe ransetzen^^. Ich Danke euch für eure Hilfe

Greetz

Highweb
 
Zurück
Oben