Se stai usando questa $pattern = "/(\[img=(.*?)\])/"; devi utilizzare $arg[2].Originariamente inviato da kylnas1
Cmq a parte questo (che ho risolto), a me il valore "arg[1]" č la stringa compresa di parentesi quadre "[img=2345]", non solo il valore dopo l'uguale.
In sostanza devi contare il numero di parentesi aperte dentro la regex per sapere quale riferimento ti interessa.