2016-11-17 1 views
0

У меня есть строка кода, которую мне нужно запустить на моем сайте WordPress, но она содержит несколько «незаконных» символов. Я могу поймать умные цитаты, но не решаюсь запустить его, опасаясь, что он может нанести серьезный и постоянный ущерб!удаление умных котировок и других символов, отличных от кода

function maybe_unserialize($original) { 
    if (is_serialized($original)) // don’t attempt to unserialize data that wasn’t serialized going in 
    { 
     $original = preg_replace(‘!s:(\d+):”(.*?)”;!se’, “‘s:’.strlen(‘$2′).’:\”$2\”;'”, $original); 
     return @unserialize($original); 
    } 
    return $original; 
} 

в частности, я не знаю, о и ' на 4-й линии.

Есть ли где-нибудь я могу убрать эти символы и заменить их?

+0

Кажется, что у вас есть скопированный код с третьего лица без фактического понимания *, что он делает *. в то время как вы не должны этого делать, лучшим способом решить вашу проблему было бы вернуться к этой третьей стороне и получить код снова, без какого-либо форматирования на front-end, что, вероятно, произошло здесь. –

ответ

0

Если вы используете Unix-подобную систему, я рекомендую использовать команду sed. Предположим, что корень проекта $PROJECT_DIR и расположение файловой системы:

$PROJECT_DIR 
└── A 
    ├── 1.php 
    └── B 
     └── 2.php 

Затем вы можете выполнить следующую команду:

find "$PROJECT_DIR" -type f -name '*.php' -exec sed -i.backup \ 
    -e "s/‘/'/g; s/”/\"/g; s/“/\"/g; s/’/'/g; s/′/'/g" {} \+ 

Команда заменяет «умные» кавычки с ASCII одной и двойные кавычки на месте. Старые файлы сохраняются с .backup префиксом:

$PROJECT_DIR 
└── A 
    ├── 1.php 
    ├── 1.php.backup 
    └── B 
     ├── 2.php 
     └── 2.php.backup 

Тогда вы будете иметь возможность откатить изменения с find команды:

find "$PROJECT_DIR" -type f -name '*.php.backup' \ 
    -exec bash -c 'mv -f "$0" "${0%.backup}"' {} \; 

И следующая команда проверяет синтаксис PHP для всех *.php файлов в дереве :

find "$PROJECT_DIR" -type f -name '*.php' -exec php -l {} \; 

Пример вывода

No syntax errors detected in ./A/1.php 
No syntax errors detected in ./A/B/2.php 
Смежные вопросы