В целом да, можно использовать extract
Однако он бесполезен, если встретятся такие строки:
"col[0]" => "нолик"
"col[1]" => "одын-одын"
"col[2]" => "туа"
"col[3]" => "тры"
"col[4]" => "чичире"
Естественно, программа потом совершит над нужными операции, а лишние просто проигнорирует, потому заранее знать, что окажется в файле и в каком порядке, невозможно.
1. Вы бы хоть указали. где именно находится строка 55, в которой возникает ошибка (если она в листинге), хотя, предположить можно.
2. А сначала (перед копированием) проверить наличие ОРИГИНАЛА картинки через file_exists() что запрещает?
Для начала самый простой вопрос - а в ОПЕРЕ ВКЛЮЧЕНЫ СОХРАНЕНИЯ КУКИ?
Там есть вариант "Не сохранять" - может вы их заблочили и теперь не можете понять, что и как?
Точно, забыл про второй аргумент прегматчол (Добавление)
Остается вопрос - что "ресурсоэкономнее" - прегматчолл с сохранением замен (для второго аргумента) или прогон прег-реплэйса с последующим подсчетом длины?
Если бот напрямую гуляет по сайтам (загружая в себя) - то почему бы и нет, а если он просто имитирует отправку формы - почему бы им не отследить значения (один раз твой код на странице прочитать внимательно - и готово).
Но все мы имеем жилку "Неуловимого Джо" - нас не ловят, так как мы нахрен не нужны. Так и твой сайт - если не будет лям посетителей в день - то никто не будет заморачиваться и добавлять в бот код твоего поля "чел/бот"
Кто мешает джаваскриптом отследить смещение мыши и клики и поменять какое то скрытое поле на значение, обозначающее "я человек"? При отправке формы регистрации проверяй это поле и посылай ботов на... Если только ботописцы не добавят ботам имитацию мышкодерганья...