Regex для разделения комментариев и мультилинии комментирует и пустые строки

У меня была такая же проблема, что и у Hash, использующего Wordpress.

Это пароль wp hash.

Пример

Сравнить уже хешированный пароль с его текстовой строкой:

CheckPassword($plain_password, $password_hashed)) {
    echo "YES, Matched";
} else {
    echo "No, Wrong Password";
}
?>

См. эти ссылки: https://codex.wordpress.org/Function_Reference/wp_hash_password

https://developer.wordpress.org/reference/functions/wp_hash_password

Он использует PasswordHash, который добавляет соль к паролю и хэширует его с 8 проходами MD5.

21
задан Alan Moore 3 April 2009 в 18:15
поделиться

5 ответов

$text = preg_replace('!/\*.*?\*/!s', '', $text);
$text = preg_replace('/\n\s*\n/', "\n", $text);
45
ответ дан chaos 29 November 2019 в 06:28
поделиться

Помните, что любое регулярное выражение, которое вы используете, не будет работать, если файл, который вы анализируете, содержит строку, содержащую что-то, соответствующее этим условиям. Например, это могло бы превратить это:

print "/* a comment */";

в это:

print "";

Что, вероятно, не , что вы хотите. Но, возможно, это так, я не знаю. В любом случае, регулярные выражения технически не могут анализировать данные таким образом, чтобы избежать этой проблемы. Я говорю технически, потому что современные регулярные выражения PCRE взяли на вооружение ряд хаков, чтобы они оба могли это делать, и, что более важно, больше не регулярных выражений, но что угодно. Если вы хотите избежать разборки этих вещей в кавычках или в других ситуациях, ничто не заменит полноценного парсера (хотя он все еще может быть довольно простым).

11
ответ дан Chris Lutz 29 November 2019 в 06:28
поделиться

Это возможно возможно, но я бы не стал этого делать. Вам нужно проанализировать весь php-файл, чтобы убедиться, что вы не удаляете все необходимые пробелы (строки, пробелы между ключевыми словами / идентификаторами (publicfuntiondoStuff ()) и т. Д.). Лучше использовать расширение токенизатора PHP.

2
ответ дан soulmerge 29 November 2019 в 06:28
поделиться

Это должно работать в замене всего/* к */.

$string = preg_replace('/(\s+)\/\*([^\/]*)\*\/(\s+)/s', "\n", $string);
2
ответ дан St. John Johnson 29 November 2019 в 06:28
поделиться
$string = preg_replace('#/\*[^*]*\*+([^/][^*]*\*+)*/#', '', $string);
2
ответ дан Federico Biccheddu 29 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: