ugrás a tartalomhoz

kiterjesztés (pont+3betű) levágása

unreal · 2005. Júl. 15. (P), 11.55
hi.
hogyan tudnám levágni egy karakterlánc végéról azt a 4 betűt?
mert a változókban nem lehet pont..... tehát ez nbem lehet: $valami.exe tehát ezt kéne valami re csinálni de több file van, ezért változó mhosszúságúak a nevek, ezért nem lehet beállítani hogy mondjuk x karaktert olvasson csak.
próbálkoztam a MD5 hash el, de mivel a változó, elején nem lehet szám, ezért az nem jó.
szóval: ha tudtok valamit ami levág 4 karaktert a szöveg VÉGÉRŐL, vagy egy váltoró ELÉ be tud tenni egy _ et vagy egy x et, azt NAGYON SZÉPEN MEGKÖSZÖNNÉM:
 
1

ezt sikerült össze eszkábálnom de ez rossz!

unreal · 2005. Júl. 15. (P), 12.07
<?php
echo "
<html>
<body bgcolor=\"4A4A4A\">
<TABLE border=\"1\">
";
include ("desc.php");
$konyvtar = 'letoltes/gta_int.img/'; // ez jó... valamire
$kiterjesztesek = 'zip'; // ezeket a kiterjesztéseket nézi; felsorolni őket szóközzel elválasztva kell
// -- innen programkód, békénhagyni tessék
$kiterjesztesek = '/('.implode('|', explode(' ', $kiterjesztesek)).')\z/i'; // reguláris kifejezés csinálása a kiterjesztésekből, mer' az jó
$filek = opendir($konyvtar); // könyvtár mögnyitása
while(($file = readdir($filek)) !== false) // könyvtár végigolvasása
if(preg_match($kiterjesztesek, $file)) // ha stimmt a regexp
$hess = md5 ($file);
$load = "x$hess";
echo "$load
<tr>
 <td bgcolor=\"thistle\"><a href=\"$konyvtar/$file\" target=\"_blank\">$file</a></td>
   <td bgcolor=\"#0080FF\"><a href=\"$konyvtar/$file.jpg\" target=\"_blank\">KÉP</a></td>
     <td bgcolor=\"#FF0080\">"; print $load["edit"]; echo "</td>
       <td bgcolor=\"orange\">"; print $load["place"]; echo "</td>
         <td bgcolor=\"lightskyblue\"><B>"; print $load["rate"]; echo "</B></td>
           <td bgcolor=\"mediumspringgreen\"><B>"; print $load["test"]; echo "</B></td>
</tr>
";
echo "
</TABLE>
</body>
</html>
";
?>

és itt a desc.php is:
<?php
// x.zip
$x99e11d4d74111ab0e26828127350db36 = array (
        "edit" => "2ből3",
        "rate" => "<FONT color=\"green\">10</FONT>/<FONT color=\"red\">0</FONT>",
        "test" => "én te ő",
        "place" => "tatabáááááááááááááááányaaaaaa",
);





// y.zip
$x5b02a88e33c061669910c31d2e599120 = array (
        "edit" => "uuuuuuuuuuuuuu",
        "rate" => "<FONT color=\"green\">5</FONT>/<FONT color=\"red\">5</FONT>",
        "test" => "anyucim, anyucid, anyucija+a BEEdög :D",
        "place" => "kukutyin",
);









?>

de ez a 2 file ugy rossz ahogy van :((((


Burgermeiszter Zoltán
5

re: ezt sikerült össze eszkábálnom de ez rossz!

kmm · 2005. Júl. 15. (P), 12.20
unreal:de ez a 2 file ugy rossz ahogy van :((((

igaz ;-)
--
üdv: kmm... ( http://kmm.hu )
2

basename

bbalint · 2005. Júl. 15. (P), 12.08
első körben (ha tudod, mi a kiterjesztés) basename():

<?php
  print(basename(__FILE__, '.php'));
?>
másodszorra (ha mindig három karakter van), substr():

<?php
  print(substr('valami.exe', 0, -4)); // a négy úgy jön ki, hogy három karakter a kiterjesztés egy meg a pont
?>
végül, preg_replace(), ha tényleg a kiterjesztéset szeretnénk levágni (ami az alábbi kódban legalább három karakteres végződést feltételez):

<?php
  print(preg_replace('/\..{3,}\z/', '', 'valami_file_aminek.hosszu_a.kiterjesztese'));
?>
bbalint
3

pont a változónévben

bbalint · 2005. Júl. 15. (P), 12.17
de, lehet pont a változó nevében, sőt! az első karaktere lehet szám is, csak ezt PHP programból (amit a PHP értelmező vizslat meg jól) nem tudod elérni, mer' a parser nem működik "úgy" ...

van egy olyan függvény, hogy get_defined_vars(), ami az éppen érvényes változó-térben definiált változókat adja vissza egy tömbben, szóval meg lehet vele nézni az összes épp' létező változókat:

<?php // ezek itt nagyjából ugyanazt fogják neked kírni
  print_r($GLOBALS);
  print_r(get_defined_vars());
?>
és akkor most lássuk a pontot a változónévben meg a számot az elején:
[colorer=PHP]
<?php
  function pontAVáltozónévbenMegSzámAzElején(){
    ${'123.valami'} = '';
    
    print_r(get_defined_vars());
  }
  
  pontAVáltozónévbenMegSzámAzElején();
  
  // illetve, lehet így is csinálni:
  $GLOBALS['123.valami'] = ''; // ez létrehoz egy 123.valami nevű változót ;-)
?>
bbalint
4

re: Kiterjesztés (pont+3betű) levágása

kmm · 2005. Júl. 15. (P), 12.17
szia,

ez alapján ki fogsz találni egy jó megoldást szerintem:

<pre><?PHP
$str = array(
	"file.ext",
	"file..ext",
	"file.a.ext",
	"file..a.ext",
	"file..a.a.ext",
	"file.",
	"file",
);
$ereg = "^(.*)\.([^.]*)$";
foreach( $str as $i ){
	unset( $regs );
	if( ereg( $ereg, $i, $regs ) ){
		print_r( $regs );
	}else{
		echo"$i\n";
	}
}
?>
--
üdv: kmm... ( http://kmm.hu )
6

explode?

Anonymous · 2005. Júl. 15. (P), 12.29
Szia!

Explod-dal a pontok mentén szétszedni, és az utolsó elem a kiterjesztés. Mindegy, hány karakteres.

<?php
function tear_file($file) {
  $file_parts = explode(".",$file);
  $file_ext = $file_parts[count($file_parts)-1];
  $file_namelength = strlen($file)-strlen($file_ext)-1;
  $mytext["name"] = substr($file,0,$file_namelength);
  $mytext["ext"] = strtolower($file_ext);
  return $mytext;
}
?>

Üdv
Zoli
7

akkor explodéval is

bbalint · 2005. Júl. 15. (P), 13.42
akkor explodéval is ...

<?php
  $filenév = 'valami.exe';
  $szétszedve = explode('.', $filenév);
  unset($szétszedve[count($szétszedve) - 1]);
  
  print(implode('.', $szétszedve));
?>
de, akkor már játszhatna a pathinfo függvény is, azt is lehetne ilyesmire használ.

bbalint
8

explode

kmm · 2005. Júl. 15. (P), 14.14
kiváncsiságból megnéztem, az explode-os megoldás majd' 5x olyan gyors mint a regexes! (tizezres nagysagrendnel is par masodperc volt mind2)

--
üdv: kmm... ( http://kmm.hu )
9

hogyne

bbalint · 2005. Júl. 15. (P), 18.29
persze, annak is kell lennije a leggyorsabbnak, de.
csak az explodé()t mérted vagy az implodé()val együtt? (mer' azér' nem mindegy)

bbalint
10

egyik se megy....... mindegy.

unreal · 2005. Júl. 15. (P), 18.49
hogy tudok a hash elé egy _ -t beszúrni?
$file = "x.zip";
$hess = md5 ($file);





hogy tudok a hash elé beszúrni egy _ t?
az arrayos oldalt láttátok.
én a tömböket egy _hash al akarom jelölni ehhez kéne a _+hash...
segítsetek.... KÖSZI


Burgermeiszter Zoltán
11

ááá feladom

unreal · 2005. Júl. 15. (P), 19.05
ááá feladom


Burgermeiszter Zoltán
12

ááá feladom: jogos!

Anonymous · 2005. Júl. 15. (P), 19.42
Valóvan jobb, ha feladod.

Egyébként:
$file = "x.zip";
$hess = '_'.md5 ($file);


Gyulus
13

strrpos

Anonymous · 2005. Aug. 30. (K), 11.15
strrpos fv: http://hu2.php.net/manual/en/function.strrpos.php
visszaadja a legutolsó előfurdulását a megadott stringnek, ami lehet egy pont is. a legutolsó előfordulás indexe pedig pont az a szám, ahány karakter van előtte.

pl: ha a pont indexe a 4, akkor a 0,1,2,3 indexű karakterek állnak előtte.

így a $result=substr($data,0,strrpos($data,".")); egész jó megoldásnak tűnik.
persze csak nekem, mert nem értek a reguláris kifejezésekhez. :]

bocs, ha már megoldódott a probléma, de gondoltam ez egy hasznos módszer.
14

Pont ezt akartam...

Dualon · 2005. Aug. 30. (K), 11.55
Épp az strrpos-t akartam mondani. Kmm, esetleg nem nézted ezt is? Kíváncsi lennék, hogy teljesít (ha nem, megcsinálom, csak feleslegesen ne foglalkozzak vele).
15

:)

Balogh Tibor · 2005. Aug. 30. (K), 14.05
Akinek kalapács van a kezébe, hajlamos mindent szögnek nézni.