kan ik op delen van strings zoeken in array_diff?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Willem Schulte

Willem Schulte

10/10/2010 13:48:39
Quote Anchor link
beste PHP-ers,

Ik heb een script gemaakt om de files in een directory uit te lezen:

foreach(array_diff(scandir($dirPath), array('..', '.', 'thumbs', 'fullsize')) as $imageName){

Nu wil ik graag naast de 4 aangegeven waarden ook alle waarden uitsluiten waar geen '.' inzit (lees: directorynamen) kan dat met array_diff? of moet ik dan wat anders hebben?

dus iets als:
foreach(array_diff(scandir($dirPath), array('..', '.', '"alles waar geen punt in zit"')) as $imageName){

alvast super bedankt.
 
PHP hulp

PHP hulp

17/05/2024 21:29:30
 
- SanThe -

- SanThe -

10/10/2010 13:55:09
 
Willem Schulte

Willem Schulte

10/10/2010 14:46:27
Quote Anchor link
Ja! dat is wat ik bedoel, dank je!

moet dat dan in plaat van de array_diff? of moet ik hem vervangen?
(al een paar dingen geprobeerd, maar krijg hem niet aan de gang)
kan ik de functie omdaaien? als in soort van !glob?

bij foreach(array_diff(glob(scandir('*.*')),array('.')) as $imageName) {
zoekt hij in de verkeerde directory...

bij foreach(array_diff(scandir($dirPath), array('..', '.', 'thumbs', 'fullsize')) as $imageName) {
foreach (glob("*.*") as $imagename) {

zitten de directory namen er gewoon tussen (wat raar is want zit geen . in)

ik moet alles overslaan waar GEEN punt in zit..

Toevoeging op 11/10/2010 12:10:51:

iemand?
Gewijzigd op 10/10/2010 14:47:45 door Willem Schulte
 
Willem Schulte

Willem Schulte

11/10/2010 21:07:09
Quote Anchor link
Help, plz?
Gewijzigd op 11/10/2010 21:07:42 door Willem Schulte
 
Noppes Homeland

Noppes Homeland

11/10/2010 21:13:47
Quote Anchor link
Zie link SanThe
 
- SanThe -

- SanThe -

11/10/2010 21:24:50
Quote Anchor link
Vertel eens in woorden wat je nou precies wilt doen want dat is mij totaal niet duidelijk.
 
Willem Schulte

Willem Schulte

11/10/2010 21:44:14
Quote Anchor link
Ik zal wat duidelijker zijn

het script doorzoekt een directory en maakt een XML aan.
bij 2 subdirectries krijg ik bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?xml version="1.0" encoding="utf-8" ?>

- <categories>
- <category name="Example">
<image name="Fireworks on the river side, 2010.jpg" width="1506" height="1000" />
</category>
- <category name="Landschappen">
<image name="002D3C_14102.jpg" width="531" height="800" />
<image name="003D3C_13944.jpg" width="800" height="343" />
</category>

wat er nu gebeurt als er binnen de directory landschappen een subdirectory vindt, krijg ik een error (omdat hij die probeert te openen als een file om te kijken hoe groot ze zijn.


Nu dacht ik, als ik alle name zonder . erin oversla (de directories) dat het dan wel moet werken, en dat wilde ik proberen met glob op advies van SanThe.

maar ik krijg het niet aan de gang.
het script wat wel werkt zal ik hieronder zetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php

header('Content-type: text/xml');

function
dirToXml($path)
{

    $path = realpath($path);    

    $doc = new DOMDocument('1.0', 'utf-8');

    $categories = $doc->createElement('categories');
    $doc->appendChild($categories);

    foreach(array_diff(scandir($path), array('..', '.')) as $dirName) {        
        $dirNode = $doc->createElement('category');
        $dirNode->setAttribute('name', $dirName);
        $dirPath = $path.DIRECTORY_SEPARATOR.$dirName;
        
        foreach(array_diff(scandir($dirPath), array('..', '.', 'thumbs', 'fullsize')) as $imageName) {
        list ($width, $height) = getimagesize('gallery'.DIRECTORY_SEPARATOR.$dirName.DIRECTORY_SEPARATOR.$imageName);
            $imageNode = $doc->createElement('image');
            $imageNode->setAttribute('name', $imageName);
            $imageNode->setAttribute('width', $width);
            $imageNode->setAttribute('height', $height);
            $dirNode->appendChild($imageNode);
        }


        $categories->appendChild($dirNode);
    }


    return $doc->saveXML();
}


//$tm=new dirToXml();
echo dirToXml('./gallery/');
?>


</categories>

Toevoeging op 12/10/2010 19:44:15:

het wil maar niet werken....
Gewijzigd op 12/10/2010 22:00:02 door Willem Schulte
 
Willem Schulte

Willem Schulte

12/10/2010 21:56:42
Quote Anchor link
Kan iemand mij helpen? ik kom er maar niet uit...

Thanks
Gewijzigd op 12/10/2010 21:59:44 door Willem Schulte
 

12/10/2010 22:00:05
Quote Anchor link
Kan je je post wat opschonen? Zo volg ik geen hout er meer van.
Kijken of ik er iets van bakken kan.
Gewijzigd op 12/10/2010 22:01:00 door
 
Willem Schulte

Willem Schulte

12/10/2010 22:00:40
Quote Anchor link
done :)
dank je
Gewijzigd op 12/10/2010 22:02:33 door Willem Schulte
 

12/10/2010 22:07:54
Quote Anchor link
Ik zie zo snel niet echt een probleem. Maar ik kan er dus makkelijk overheen kijken. Zelf heb ik geen zin om dit hier te testen.
Je kunt dus het beste overal var_dump's dumpen om te kijken wat de inhoud van de variabelen zijn.
 
Willem Schulte

Willem Schulte

12/10/2010 22:11:54
Quote Anchor link
het laatste script heeft ook geen probleem, alleen sluit dat slechts de directories 'thumbs' en 'fullsize' uit, ik wil ALLE directories uitsluiten

en dat heb ik geprobeeld met die GLOB regel iets hoger, maar die doet het niet...
Gewijzigd op 12/10/2010 22:12:28 door Willem Schulte
 

12/10/2010 22:14:11
Quote Anchor link
Oh, dat is het probleem.
Zie dan scandir... Goed kijken.
 
Willem Schulte

Willem Schulte

12/10/2010 22:23:18
Quote Anchor link
daar kan ik geen uisluiting van directories vinden?
en dat stukje lijkt wel te werken..
ik ben ERG onervaren :/ (in PHP dan)

Toevoeging op 12/10/2010 23:53:42:

okee, ben er BIJNA....
wat is de wildcard voor 'alles waar een "." in zit'?
*.* geeft ook alles waar geen "." in zit...

Toevoeging op 13/10/2010 01:48:26:

opgelost, dank
Gewijzigd op 12/10/2010 22:24:00 door Willem Schulte
 

13/10/2010 08:34:47
Quote Anchor link
Op die scandir pagina stond gewoon een link naar is_dir...
En daar had je weer een link naar is_file bijvoorbeeld...
Maakt niet uit hoe onervaren je bent in php, als je die pagina goed doorleest zou je dat in principe tegen moeten komen.
 
Willem Schulte

Willem Schulte

13/10/2010 13:05:18
Quote Anchor link
precies :)

Alleen als je onder deadline stress zit leer je niet altijd even zuiver
en inderdaad opgelost met is_dir

wederom thanks! :)
 

13/10/2010 13:10:10
Quote Anchor link
De key is weten wat je zoekt. Wat wil je? Je wilt weten of iets een directory is. Dan kan je heel makkelijk die pagina bij langs gaan om te kijken of er iets over het vinden van directory wordt gezegd. En dat wordt er :-D
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.