А бекграундом не положить картинку?
Не надо никаких маргинов...
Ну вот, например, за пару минут накидал:
codepen.io/anon/pen/adroLr
Да и "Я попробовал с помощью PHP" - что Вы там попробовали? Вам нужно на php сгенерировать html. Просто пробежаться foreach по условному массиву и на каждой итерации генерить элемент списка, в котором будет контейнер url картинки и текстом. Остальное - css, если надо, то и js.