Ошибка в коде по php

12 3
P
На сайте с 10.09.2011
Offline
37
1339

Здравствуйте форумчане!

Может сможет кто-то помочь? Вопрос похожий.

У меня при настройке сайта возникла ошибка в коде по php. Сам от php далекий человек. Смогли бы вы помочь мне решить этот вопрос, как его необходимо записать?

Высвечивает вот такое предупреждение:

Warning: preg_replace_callback(): Requires argument 2, 's1('1').__fixx('3','automatic-fdb08001w0').'4'/', to be a valid callback in /home/u181271132/public_html/_admin/node.html.php on line 36

Вот сам кусок этого кода.

function s1($A){

return str_replace("\\\"", "\"", $A);

}

function fixx($A,$H){

return preg_replace_callback("/(<[a-z][^<>]*?(?:src|href))=(['\"])?(.*?)(?(2)\\2|([\s>]))/i", "s1('\\1').__fixx('\\3','{$H}').'\\4'/", $A);

}

В конфигурации сервера установлена версия php-5,5

Kurses
На сайте с 14.08.2016
Offline
2
#1

ошибка говорит что 2 аргумент не правильно указан, вот описание функции http://php.net/manual/ru/function.preg-replace-callback.php или используйте просто preg_replace

P
На сайте с 10.09.2011
Offline
37
#2

Это хорошо, и благодарю за отзыв. Писал выше в php вообще не смыслю и соответственно мне это ни о чем не говорит.

В данной ситуации просьба переписать код так как он должен быть написан по правилам php и что бы он работал без высвечивания соответствующей ошибки.

---------- Добавлено 22.08.2016 в 09:32 ----------

Kurses:
или используйте просто preg_replace
Эта функция там и стояла, но новые версии php на нее ругаются, так как она уже устаревшая. Ее сменил, и вылезла ошибка как указана в первом посте.
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#3

PARFUMER_, если в пхп не смыслите, то рано вам нуллить скрипты, юзайте скрипт как есть.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
P
На сайте с 10.09.2011
Offline
37
#4
foxi:
PARFUMER_, если в пхп не смыслите, то рано вам нуллить скрипты, юзайте скрипт как есть.

Так CMS готовую и юзаю, а выкидывает ошибку, которую необходимо убрать. Вот и спрашиваю помощи. как необходимо записать эту строку правильно и в рабочем виде.

W
На сайте с 18.09.2006
Offline
86
#5

Вам нужно сделать еще одну функцию и вызывать ее в качеств callback

и в ней организовать то что сделано у вас строкой "s1('\\1').__fixx('\\3','{$H}').'\\4'/"

вот так должно работать


function fixx($A,$H){
return preg_replace_callback(
'/(<[a-z][^<>]*?(?:src|href))=(['\"])?(.*?)(?(2)\\2|([\s>]))/i',
function($matches){
return s1($matches[1]).__fixx($matches[3],$H).$matches[4].'/';
}, $A);
}
P
На сайте с 10.09.2011
Offline
37
#6
wanick:
Вам нужно сделать еще одну функцию и вызывать ее в качеств callback
и в ней организовать то что сделано у вас строкой "s1('\\1').__fixx('\\3','{$H}').'\\4'/"

вот так должно работать

function fixx($A,$H){
return preg_replace_callback(
'/(<[a-z][^<>]*?(?:src|href))=(['\"])?(.*?)(?(2)\\2|([\s>]))/i',
function($matches){
return s1($matches[1]).__fixx($matches[3],$H).$matches[4].'/';
}, $A);
}

Благодарю за содействие!

Вот этот код, что написан Вами здесь, мне скопировать и вставить вместо 36 линии, что вызывала ошибку и должно работать. Правильно понял?

nikonlay
На сайте с 11.12.2006
Offline
176
#7

PARFUMER_, у вас во втором параметре "s1('\\1').__fixx('\\3','{$H}').'\\4'/" видна функция __fixx()

В документации preg_replace_callback сказано, что 2-м должна идти callback-функция.

А у вас, помимо функции, еще "обрамление" в виде s1('\\1')

И wanick вам показал пример такой фунции, которая все "обрамление" внутри содержит.

p.s. грубо говоря

Мощные фонари и бинокли: https://market.yandex.ru/store--volny-i-veter?businessId=79203856
P
На сайте с 10.09.2011
Offline
37
#8

nikonlay, Вы смогли бы исправить код в этом файле если его Вам вышлю его полностью.

В php полный ноль. В CMS высвечивает эту ошибку, вот скопировал и попросил исправить.

И кусок этого кода, а как его править, я понятия не имею.

Kurses
На сайте с 14.08.2016
Offline
2
#9

Чем вызвана необходимость смены версии ПХП? Какая была, а какая стала?

Может всеже лучше вернуться обратно, а то не исключено что у Вас еще где то не вылезут сюрпризы.

Потом найти того, кто бы смог проверить код на несовместимости, изменить под новую версию ПХП а потом и саму версию ПХП.

nikonlay
На сайте с 11.12.2006
Offline
176
#10

PARFUMER_, ну вы попробуйте сначала заметить ваш кусок кода:

function s1($A){

return str_replace("\\\"", "\"", $A);

}

function fixx($A,$H){

return preg_replace_callback("/(<[a-z][^<>]*?(?:src|href))=(['\"])?(.*?)(?(2)\\2|([\s>]))/i", "s1('\\1').__fixx('\\3','{$H}').'\\4'/", $A);

}

на

function s1($A){

return str_replace("\\\"", "\"", $A);

}

function fixx($A,$H){

return preg_replace_callback(

'/(<[a-z][^<>]*?(?:src|href))=(['\"])?(.*?)(?(2)\\2|([\s>]))/i',

function($matches){

return s1($matches[1]).__fixx($matches[3],$H).$matches[4].'/';

}, $A);

}

Как wanick пишет, должно работать

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий