se codice dell'articolo precede '_m.jpg' senza fare l'explode che ti produce un valore inutile ($articolo2 che contiene sono '_m') dovresti modificare il codice così:



Codice PHP:
foreach (glob("../images/shop/marca/*_m.jpg") as $url_img) { 
    
$nomefile basename($url_img); 
    
$codice_articolo substr($nomefile0strpos($nomefile"_m.jpg"));  
    if(
$articolo_prod == $codice_articolo){          
        
$url_img ''../images/shop/$nome_produttore_shop_get/$codice_articolo_m.jpg"; 
    }  

se quel codice non produce nessun output, vuol dire che sbagli l'url e non trovi nessuna immagine che si chiama *_m.jpg all'url ../images/shop/marca

Tra l'altro io non capisco a cosa serva tutto questo se tu il codice del prodotto lo conosci già e quindi al posto di fare il ciclo e tutto il resto ti basterebbe fare:

<?php $url_img = ''../images/shop/$nome_produttore_shop_get/$articolo_prod_m.jpg"; ?>
[img]<?php echo $url_img ?>[/img]

facendo una cosa del genere otterresti l'immagine che ti serve(sempre ammesso che l'url sia giusto) o in alternativa (se l'immagine non esiste) la scritta 'immagine non disponibile', mi sa che avevo interpretato male la tua domanda.