Разбор в PHP - PullRequest
       28

Разбор в PHP

0 голосов
/ 25 февраля 2009

у меня есть переменная $result, которая содержит это

Country: USA City: NY Latitude: 32.2667 Longitude: 71.9167

Как мне разобрать это, чтобы я мог получить результат так:

Country=USA&City=NY&Latitude=32.2667&Longitude=71.9167

Ответы [ 4 ]

3 голосов
/ 25 февраля 2009

Быстрый взлом

str_replace(array(': ', ' '), array('=', '&'), $string);
2 голосов
/ 25 февраля 2009

Если в какой-то момент вам понадобится выполнить некоторую проверку ваших данных, метод str_replace может перестать работать для вас (хотя это самый простой способ решения вашей проблемы). Затем вы захотите извлечь данные более умным, но более сложным способом:

$string = "Country: USA City: NY Latitude: 32.2667 Longitude: 71.9167";
$matches = Array();
$has_match = preg_match('/Country: (\w+) City: (\w+) Latitude: ([0-9.]+) Longitude: ([0-9.]+)/',$string,$matches);
if ($has_match) {
    list($country,$city,$lat,$long) = array_slice($matches,1);
}
else {
    print "no matches";
}

Теперь вы можете делать то, что вам нравится, чтобы убедиться, что значения $ country, $ city, $ lat и $ long являются нормальными, а затем объединить их в строку запроса с помощью:

$query_string = "Country=$country&City=$city&Latitude=$lat&Longitude=$long"
2 голосов
/ 25 февраля 2009
str_replace(' ', '&', str_replace(': ', '=', $string));

Может работать как хочешь.

0 голосов
/ 12 августа 2013

Обычное выражение во втором ответе в порядке, но оно нуждается в небольших исправлениях.

preg_match ( '/ ^ Страна = (\ W +) & City = (\ W +) и Широта = ([0-9]. +) & Долгота = ([0-9.] +) /', $ Строка, спички $ );

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...