Selectare text din nume fisier

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Viruzzz
Mesaje:18

Selectare text din nume fisier

As dori un exemplu de cod php pentru a selecta numele poza-asta-large.jpg
Textu doar: poza-asta sau orice altceva scris, dar ca baza sa am large.jpg.

MarPlo Mesaje:4343
Salut
Uite un exemplu de cod care selecteaza partea de text ce e pana la "large" din sirul care se termina cu "...large.jpg".

Cod: Selectaţi tot

<?php
$nmf = 'poza-asta-large.jpg';
$getrgx = '/(.*?)large.jpg/i';
if(preg_match($getrgx, $nmf, $mc)) {
  echo trim($mc[1], '-');
}
else 'Nume fisier nepotrivit';
 

Viruzzz Mesaje:18
Dar la partea de la $nmf nu se poate face sa se ia orice nume dintr\-un folder cu poze si-n care sa caute doar ce au in componenta "...large.jpg" ?
Dupa care cu un echo $arata; sau ceva sa'mi arate numele complet al pozei poza-asta-large.jpg, poza-2-large.jpg ....

MarPlo Mesaje:4343
Acea parte de cod poti incerca si tu sa o faci.
Uite aici un tutorial despre lucru cu directoare si fisiere: DirectoryIterator - obtine informatii despre fisiere si directoare , din explicatiile si exemplu de acolo, plus propriile tale idei si teste, poti adauga numele fisierelor intr-un Array, apoi parcurgi acel array si pastrezi doar elementele care vrei.

- Explicatii si exemplu sunt si in lectia Lucru cu directoare.
Spor.

Viruzzz Mesaje:18
scuze, dar o parte e cam asa... cum o inteleg eu:

Cod: Selectaţi tot

$dir = "catalog/".$ID_Number."/PARTEA ASTA";
$getrgx = '/(.*?)large.jpg/i';
if(preg_match($getrgx, $dir, $mc)) {
  echo trim($mc[1], '-');
}
else 'Nume fisier nepotrivit';
 
la "PARTEA ASTA" nu inteleg cum sa fac... m'am uitat acolo, dar nu m'am prins.
sau no mai trec fiindca o ia de la $getrgx ?

MarPlo Mesaje:4343
Daca e vorba de un singur fisier, scrie direct numele.
Daca vrei sa folosesti mai multe nume de fisiere din director, nu merge aplicat direct codul dat mai sus, acela e doar un exemplu pe care-l poti adapta la un cod facut de tine.
Deci:
1. Se preia numele fisierelor dintr-un director, poti folosi " DirectoryIterator ", sau opendir() cu readdir(). Sunt exemple clare in link-urile date mai sus, sau vezi in manualul PHP ( php.net ) cum se folosesc aceste functii.
2. In functia care parcurge fisierele din director poti adauga functia preg_match() data mai sus, ca sa fie aplicata la fiecare fisier parcurs.

Poate iti e de folos si codul din subiectul de aici: Preia nume fisiere dintr-un director.

Viruzzz Mesaje:18
Nu dau de cap cu problema asta... o inceput sa ma doara capul sa ma tot uit pe php.net, am incercat de mai jos, dar imi apare cu Array.

Cod: Selectaţi tot

<?php
$imgdir = 'catalog/images/'.$ID_Number.'/';
$files = array();

$objDI = new DirectoryIterator($imgdir);
foreach($objDI as $fileinfo)
{
      if($fileinfo->isFile())
      {
        $files[] = preg_match('/(.*?)large.jpg/i', '', $fileinfo->getFilename());
      }
}
?>
<img src="<?php echo implode('', $files);?>" />
Cum anume trebuie.... sa-l realizez?.. pls, un code complet.

MarPlo Mesaje:4343
E greseala la parametrii functiei preg_match().
Incearca exemplu acesta, mai departe il poti modifica dupa cum stii.

Cod: Selectaţi tot

<?php
$imgdir = 'catalog/images/'.$ID_Number.'/';

$objDI = new DirectoryIterator($imgdir);
foreach($objDI as $fileinfo){
  if($fileinfo->isFile()){
    if(preg_match('/(.*?)large.jpg/i', $fileinfo->getFilename(), $mc)) {
      $fname = $mc[0];     // numele fisierului cu "large"
      $fara_large = trim($mc[1], '-');     // partea fara "large.jpg"
      echo '<img src="'. $fname. '" /> '. $fara_large. '<br/>';
    }
  }
}
?>