strings subtrahieren?

mucus

Grünschnabel
tach!

ich bin ein totaler php-neuling und stehe seit kurzem vor diesem problem:

string $s3 setzt sich aus ner zeichenkette und string s2 zusammen, also die addition von strings hat prima funktioniert.

anders:

$s1="tar";
$s2="$s1.gz";
$s3="nedatei.$s2"; //ausgabe --> nedatei.tar.gz

jetzt würde ich jedoch gerne die endung ".tar.gz", bzw. $s2 wieder von $s3 entfernen. wie stelle ich das an??

gruß und danke im voraus

mucus
 
? hä
wieso machst du die Endung hin, wenn du sie weg haben willst ?

Und zu deinem Problem. Ich würde die ganze Variable löschen und neu definieren also
<?
unset($s3);
$s3="nedatei";
?>

hoffe mal das du es so meinst
 
ok, warn schlecht gewähltes beispiel. hier is der code, an dem ich arbeite:

$s="0";
$title="0";
$z="20";
do {
$currentdir=getcwd();
$d=dir("$currentdir");
$dirnm=dirname($currentdir);
$dirs=split("/",$currentdir);

foreach ($dirs as $c) { $dirnm=$c;}
while (false !== ($entry = $d->read())) {
$siz=filesize($entry);
if ($siz>1024) {
$siz=$siz/1024; // Kilobytes
if ($siz>1024) {
$siz=$siz/1024; // Megabytes
$siztyp="MB";
}
else {
$siztyp="KB";
}
}
else {
$siztyp="Byte";
}
$s="$z.2";
$title=$entry;
if ($entry!="." and $entry!=".htaccess" and $entry!=".htpasswd" and $entry!='..' and $entry!=str_replace('/', '', getenv('SCRIPT_NAME')) && strpos($entry,$s)) {
$siz=intval($siz * 100) / 100;
include ('tmp/header_tr.tmp');
include ($entry);
echo ($title);
include ('tmp/footer_tr.tmp');
}
}
$d->close();
$z=$z-1;
}
while ($z>=1);
?>



das programm liest alle dateien mit ner bestimmten endung ein. ich möchte aber noch eine variable, die nur den dateinamen, ohne endung ($s) beinhaltet. das ist mein problem.

wenns noch fragen zum problem gibt, versuch ich sie gerne zu beantworten! kann nich so gut beschreiben .. :]
 
Nur so als Tipp, ich würde deine Variabeln besser kennzeichnen, denn diese ein-Buchstaben-Variabeln sind nicht gerade schön zum lesen und verstehen. Ausserdem solltest du deinen Code so verpacken:
PHP:
dann ist das sehr viel leichter zu lesen und macht es anderen viel einfacher dir zu helfen.

Zu deinem Prob:
Wenn du die Länge deiner Variabeln weisst, d.h. ohne den kram der abgeschnitten werden soll, dann kannst du das so lösen:
PHP:
$var = "blabla.tf";   //hab jetzt einfach mal irgend einen kram in
                      //die Variable geschrieben
Um jetzt beispielsweise das .tf abzuschneiden benutzt du die Funktion substr() :
PHP:
$var = substr($var, 0, 6);
substr() "schneidet" die variable aus, d.h. alles vor 0 Zeichen (also nichts) und alles nach 6 Zeichen, also das .tf werden "ausgeschnitten".
Hoffe ich konnte dir helfen
Pcnub
 
Zuletzt bearbeitet:
ich werds in zukunft berücksichtigen!

das problem hat aber eigentlich weniger mit dem vorhandenen code zu tun.

das programm ließt alle dateien in einem verzeichnis ein.
danach listet es mir alle auf, die eine bestimmte endung haben (zb. 2.2). $entry bekommt logischer weise immer wieder nen neuen wert. (zb. test.2.2, asd.2.2, ..)
nun möchte ich zusätzlich ne variable haben, in der immer nur der dateiname und keine endung steht. (zb. test, asd, ..)

mein erster gedanke war:

PHP:
$date_ohne_suffix=$entry-$suffix; // aber das geht natürlich  nich ...

ich hoffe, ihr habt jetzt verstanden, worauf ich eigentlich hinaus will und könnt mir n bisschen helfen!
 
alles klar, vielen dank!

jetzt muss ich nur noch wissen, wie ich die länge eines strings bestimmen kann, da ja nich immer alle gleichlang sind.

mfg mucus
 
Hi,

PHP:
$string = " info.txt";

$name = str_replace("\\.txt","",$string);

hoffe das hilft
schau dir die hilfe zu str_replace() an

grz MrF
 
Zuletzt bearbeitet:
Zurück