PHP 7.3 strpos () проблема с иглами? - PullRequest
0 голосов
/ 09 июля 2019

ОШИБКА: strpos (): нестроковые иглы будут интерпретироваться как строки в будущем. Используйте явный вызов chr (), чтобы сохранить текущее поведение в

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

Этот код использует текстовые файлы get для поиска и возвращает массив файлов с этим поиском. Код работал до обновления 7.3.

  $search_get = $_GET['q'];
  if ($search_get = NULL) {
  $search_get = 'encyclopedia';
  }

  foreach (glob("dir/*.txt") as $search) {
    $contents = file_get_contents($search);
    if (!strpos($contents, $search_get)) continue;
    $found[] = $search;
  }

Как $ search_get здесь недействителен?

1 Ответ

1 голос
/ 09 июля 2019

@ paul-t правильно, вы назначаете переменную вместо сравнения ее с нулем, поэтому вы должны использовать так называемые условия Йоды

if (null === $search_get) {
    $search_get = 'encyclopedia';
}

В любом случае, это немного упрощенная версия вашего кода:

$search_get = @$_GET['q'] ?: 'encyclopedia';

foreach (glob("dir/*.txt") as $search) {
    $contents = file_get_contents($search);
    if (!empty($contents) && false !== strpos($contents, $search_get)) {
        $found[] = $search;
    }
}

Кстати, рассмотрите возможность использования stripos вместо strpos, потому что в настоящее время ваши проверки по переменной $contents чувствительны к регистру.

...