2016-04-25 2 views
2

У меня есть инструмент поиска на основе API, созданный на PHP и работающий внутри iframe на сайте с WordPress. Пользователи заполняют форму поиска и используют функцию .POST после отправки клика, информация передается на вторую страницу, которая заполняет URL-адрес и возвращает результаты JSON.PHP HTML-кодировка + знак?

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

Мне интересно, есть ли способ заставить или направлять браузер для обработки пробелов как + знаков?

Конечная проблема заключается в том, что критерии поиска должны пройти + знаки на следующей странице fboResults.php и нет.

Вот моя форма ...

<form name="search action="fboResults.php" method="post"> 
     <div style="float:left;"> 
     <lable for="searchTerm">Search Criteria: </label> 
      <input type="text" name="searchTerm"/></br></br> 
    </div> 
    <div style="float:right;"> 
     <lable for="searchBy">Search By:</label> 
      <select name="searchBy"> 
       <option value="FBO" selected="selected">FBO</option> 
       <option value="grants.gov”:">Grants.Gov</option> 

      </select>&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Search"/> 

Спасибо за любую помощь, и я ценю, что вы все нашли время, чтобы прочитать это!

+0

use 'urlencode()' – Daan

+0

Вы отправляете форму & используя метод POST, поэтому «+» не появится. Почему вы хотите добавить знак '+'? –

+0

Я не уверен, как использовать urlencode, вы могли бы разработать? Что касается вопроса API, который я использую, каждое слово в поиске должно быть разделено знаком +. –

ответ

0

Когда вы доставляете HTML, чтобы составить форму, чтобы пользователь представить его и обработать его с PHP вы не должны кодировать или декодировать данные сами:

  • браузер будет кодировать его автоматически для пользователя:

    Encoded form

  • PHP декодирует его автом матически для вас:

    var_dump($_POST['searchTerm']); 
    

    строка (6) "! 1 + 2 = 3"

+0

Как мне отформатировать это в моей конечной ссылке без нарушения правильного формата PHP? Вот конечная ссылка .. https://api.data.gov/gsa/fbopen/v0/opps?q=".$_POST["searchTerm"]."&data_source –

+1

Я полагаю, вы не имеете в виду, что работаете правительство США ... поэтому у вас нет контроля над принимающей стороной. Тогда вам нужно будет использовать JavaScript: вы не можете контролировать то, что браузер отправляет с HTML (который является языком разметки) или PHP (который уже давно работает). Итак, вы уверены, что ИТ-ребята, которые работают в Вашингтоне, не могут понять, как бороться с пробелами в их API? –

+0

Полагаю, что, читая документацию, они просто устанавливают белые пробелы для представления ИЛИ по умолчанию. Если я не добавлю знак +, я могу увидеть его в результатах поиска. Итак, теперь мой вопрос изменился и немного изменился, я пытаюсь понять, как переопределить синтаксис запроса lucene по умолчанию, который у них есть. По-видимому, это возможно, я просто потерялся в документации :-( –

1

Для кодирования данных, которые вы можете использовать функцию экранирования в встроенной в Java Script. вы также можете использовать base64 для кодирования данных.

Или, если вам нужно, чтобы он был зашифрован, вы можете зашифровать его с помощью общедоступного ключа шифрования, а затем добавить фрагмент кода для локального декодирования данных через ваш закрытый ключ. Для получения дополнительной информации об этом исследовании «Public, Private encryption keys».

Смежные вопросы