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():
  1. <?php  
  2.   print(basename(__FILE__'.php'));  
  3. ?>  
másodszorra (ha mindig három karakter van), substr():
  1. <?php  
  2.   print(substr('valami.exe', 0, -4)); // a négy úgy jön ki, hogy három karakter a kiterjesztés egy meg a pont  
  3. ?>  
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):
  1. <?php  
  2.   print(preg_replace('/\..{3,}\z/''''valami_file_aminek.hosszu_a.kiterjesztese'));  
  3. ?>  
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:
  1. <?php // ezek itt nagyjából ugyanazt fogják neked kírni  
  2.   print_r($GLOBALS);  
  3.   print_r(get_defined_vars());  
  4. ?>  
  5. és akkor most lássuk a pontot a változónévben meg a számot az elején:  
  6. [colorer=PHP]  
  7. <?php  
  8.   function pontAVáltozónévbenMegSzámAzElején(){  
  9.     ${'123.valami'} = '';  
  10.       
  11.     print_r(get_defined_vars());  
  12.   }  
  13.     
  14.   pontAVáltozónévbenMegSzámAzElején();  
  15.     
  16.   // illetve, lehet így is csinálni:  
  17.   $GLOBALS['123.valami'] = ''// ez létrehoz egy 123.valami nevű változót ;-)  
  18. ?>  
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:
  1. <pre><?PHP  
  2. $str = array(  
  3.     "file.ext",  
  4.     "file..ext",  
  5.     "file.a.ext",  
  6.     "file..a.ext",  
  7.     "file..a.a.ext",  
  8.     "file.",  
  9.     "file",  
  10. );  
  11. $ereg = "^(.*)\.([^.]*)$";  
  12. foreach$str as $i ){  
  13.     unset( $regs );  
  14.     ifereg$ereg$i$regs ) ){  
  15.         print_r( $regs );  
  16.     }else{  
  17.         echo"$i\n";  
  18.     }  
  19. }  
  20. ?>  
--
ü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 ...
  1. <?php  
  2.   $filenév = 'valami.exe';  
  3.   $szétszedve = explode('.'$filenév);  
  4.   unset($szétszedve[count($szétszedve) - 1]);  
  5.     
  6.   print(implode('.'$szétszedve));  
  7. ?>  
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.