В основном я пытаюсь достичь:
Я повозился и смог написать код, который делает то, что сказано выше, однако моя текущая проблема заключается в следующем:
Строка «Игла», которая в шестнадцатеричном формате преобразуется в «6e6565646c65»; не соответствует в файле, если буквы написаны заглавными буквами (с учетом регистра). Например, он не будет соответствовать «Needle» или «NeedlE».
Итак, как мне проверить, существует ли строка в файле без учета регистра? Я пробовал НЕ менять файл на шестнадцатеричную строку и проверять необработанные данные, но, к сожалению, мне не удалось заставить его работать.
Вот код, который у меня есть прямо сейчас:
$hex = unpack("H*", file_get_contents($filetmp));
$hex = current($hex);
if (strpos(strtolower($hex), '6e6565646c65'){
//string "needle" matches in the file
}
Есть идеи, что можно сделать с помощью PHP? Это может быть совсем другой метод, я не против, изучу.
Я получил ответ ниже, который решает проблему. Нет особой причины, так я обрабатываю байты в C, поэтому я сделал то же самое с PHP.
Ах, ладно, в этом случае вы также можете сделать что-то вроде: $contains_needle = (stripos(file_get_contents($filetmp), 'needle') !== false); и $contains_needle будут иметь значение true / false в зависимости от ситуации.






Вы можете попробовать проверить иглу по строчным данным файла:
$hex = unpack("H*", strtolower(file_get_contents($filetmp)));
$hex = current($hex);
if (strpos($hex, '6e6565646c65' !== false) {
//found
}
Также проверьте наличие false, поскольку strpos вернет ложный 0, если он будет найден в начале.
Понятно, так вот как работают переменные PHP? Я привык к C#, поэтому точно подумал, что мне нужно каким-то образом преобразовать типы. Спасибо, трюк сработал, ценю.
Преобразование файла / текста поиска в шестнадцатеричный не имеет особого смысла, есть ли конкретная причина, по которой вы хотите / пытаетесь это сделать?