Поиск текстовых файлов с помощью PHP с пользовательского ввода

Ищете решение для поиска по списку Zip-кодов. У меня есть текстовый файл с кучей почтовых индексов, которые мы обслуживаем. Хотелось бы иметь форму на веб-сайте с просьбой ввести свой почтовый индекс, чтобы узнать, обслуживаем ли мы эту область. Если это так, отобразите сообщение о том, что мы делаем, если нет, заявив, что мы этого не делаем. Мысль PHP будет лучшим решением для моей проблемы, но я все-таки нуб, когда дело доходит до этого.

У меня есть моя форма, я просто не уверен, как искать текстовый файл и отображать ответ в другом div?

<form action="zipcode.php" method="post"> <input type="text" name="search" /> <input type="submit" /> </form> 

ОБНОВЛЕНИЕ: Предпочтительно решение AJAX!

Solutions Collecting From Web of "Поиск текстовых файлов с помощью PHP с пользовательского ввода"

Метод AJAX (протестирован)


Обработчик PHP

(Find_in_file_ajax.php)

 <?php $search = $_POST['search']; $text = file_get_contents('zipcodes.txt'); $lines = explode("\n", $text); if(in_array($_POST['search'], $lines)){ //checks if ZIP is in array echo "ZIP code found"; }else{ echo "ZIP code does not exist"; } ?> 

Форма HTML

 <!DOCTYPE html> <html> <head> <style> .update { font-family:Georgia; color:#0000FF; } </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript"> $(function() { $(".search_button").click(function() { // getting the value that user typed var searchString = $("#search_box").val(); // forming the queryString var data = 'search='+ searchString; // if searchString is not empty if(searchString) { // ajax call $.ajax({ type: "POST", url: "find_in_file_ajax.php", data: data, beforeSend: function(html) { // this happens before actual call $("#results").html(''); $("#searchresults").show(); $(".word").html(searchString); }, success: function(html){ // this happens after we get results $("#results").show(); $("#results").append(html); } }); } return false; }); }); </script> </head> <body> <div id="container"> <div> <form method="post" action=""> <input type="text" name="search" id="search_box" class='search_box'/> <input type="submit" value="Search" class="search_button" /><br /> </form> </div> <div> <div id="searchresults">Search results: <span id="results" class="update"></span> </div> </div> </div> </body> </html> . <!DOCTYPE html> <html> <head> <style> .update { font-family:Georgia; color:#0000FF; } </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript"> $(function() { $(".search_button").click(function() { // getting the value that user typed var searchString = $("#search_box").val(); // forming the queryString var data = 'search='+ searchString; // if searchString is not empty if(searchString) { // ajax call $.ajax({ type: "POST", url: "find_in_file_ajax.php", data: data, beforeSend: function(html) { // this happens before actual call $("#results").html(''); $("#searchresults").show(); $(".word").html(searchString); }, success: function(html){ // this happens after we get results $("#results").show(); $("#results").append(html); } }); } return false; }); }); </script> </head> <body> <div id="container"> <div> <form method="post" action=""> <input type="text" name="search" id="search_box" class='search_box'/> <input type="submit" value="Search" class="search_button" /><br /> </form> </div> <div> <div id="searchresults">Search results: <span id="results" class="update"></span> </div> </div> </div> </body> </html> 

Оригинальный ответ

проверенный

Сначала необходимо получить доступ к файлу через file_get_contents , затем взорвать каждую запись и извлечь интересующий поиск почтового индекса.

Предполагая, что файл zipcodes.txt имеет следующий формат:

43505
43517
43518
43526
43543

ПРИМЕЧАНИЕ . Если запрошено 43505, оно будет найдено. В отличие от 4350 или 3505 не будет найдено, так что это уникальный запрос.

Рассмотрим следующее:

 <?php $search = $_POST['search']; $text = file_get_contents('zipcodes.txt'); $lines = explode("\n", $text); if(in_array($_POST['search'], $lines)){ //checks if ZIP is in array echo "ZIP code found."; }else{ echo "ZIP code does not exist"; } ?> 

Видел ваше редактирование … ниже – PHP.

Я бы сделал что-то вроде

 $lines = file("/path/to/file.txt", FILE_IGNORE_NEW_LINES); //reads all values into array if(in_array($_POST['search'], $lines)){ //checks if ZIP is in array echo "found zip code"; }else{ echo "zip code does not exist"; } 

Пока не существует ОЧЕНЬ БОЛЬШОГО количества почтовых индексов … это должно быть хорошо. Кроме того, каков формат вашего файла? Это может не сработать.