отфильтровать определенную строку в php - PullRequest
0 голосов
/ 10 сентября 2010

$ переменная = "UseCountry = 1 UseCountryDefault = 1 UseState = 1 UseStateDefault = 1 UseLocality = 1 UseLocalityDefault = 1 cantidad_productos = 5 expireDays = 5 apikey = ABQIAAAAFHktBEXrHnX108wOdzd3aBTupK1kJuoJNBHuh0laPBvYXhjzZxR0qkeXcGC_0Dxf4UMhkR7ZNb04dQ Distancia = 15 AutoCoord = 1 user_add_locality = 0 SaveContactForm = 0 ShowVoteRating = 0 Listlayout = 0 WidthThumbs = 100 HeightThumbs = 75 WidthImage = 640 HeightImage = 480 ShowImagesSystem = 1 ShowOrderBy = 0 ShowOrderByDefault = 0 ShowOrderDefault = DESC SimbolPrice = $ PositionPrice = 0 FormatPrice = 0 ShowLogoAgent = 1 ShowReferenceInList = 1 ShowCategoryInList = 1 ShowTypeInList = 1 ShowAddressInList = 1 ShowContactLink = 1 ShowMapLink = 1 ShowAddShortListLink = 1 ShowViewPropertiesAgentLink = 1 ThumbsInAccordion = 5 WidthThumbsAccordion = 100 HeightThumbsAccordion = 75 ShowFeaturesInList = 1 ShowAllParentCategory = 0 AmountPanel = AmountForRegistered = 5 RegisteredAutoPublish = 1 AmountForAuthor = 5 AmountForEditor = 5 AmountForPublisher = 5 AmountForManager = 5 AmountForAdministrator = 5 AutoPublish = 1 MailAdminPublish = 1 DetailLayout = 0 ActivarTabs = 0 ActivarDescripcion = 1 ActivarDetails = 1 ActivarVideo = 1 ActivarPanoramica = 1 ActivarContactar = 1 ContactMailFormat = 1 ActivarReservas = 1 ActivarMapa = 1 ShowImagesSystemDetail = 1 WidthThumbsDetail = 120 HeightThumbsDetail = 90 idCountryDefault = 1 idStateDefault = 1 ms_country = 1 ms_state = 1 ms_locality = 1 ms_category = 1 ms_Subcategory = 1 ms_type = 1 ms_price = 1 ms_bedrooms = 1 ms_bathrooms = 1 ms_parking = 1 ShowTextSearch = 1 minprice = maxprice = ms_catradius = 1 idcatradius1 = idcatradius2 = ShowTotalResult = 1 md_country = 1 md_state = 1 md_locality = 1 md_category = 1 md_type = 1 showComments = 0 useComment2 = 0 useComment3 = 0 useComment4 = 0 useComment5 = 0 AmountMonthsCalendar = 3 StartYearCalendar = 2009 StartMonthCalendar = 1 PeriodOnlyWeeks = 0 PeriodAmount = 3 PeriodStartDay = 1 apikey = ABQIAAAAJ879Hg7OSEKVrRKc2YHjixSmyv5A3ewe40XW2YiIN-ybtu7KLRQiVUIEW3WsL8vOtIeTFIVUXDOAcQ «;

в этой строке только я хочу "api==ABQIAAAAJ879Hg7OSEKVrRKc2YHjixSmyv5A3ewe40XW2YiIN-ybtu7KLRQiVUIEW3WsL8vOtIeTFIVUXDOAcQ"; Пожалуйста, направьте меня правильно;

Ответы [ 4 ]

5 голосов
/ 10 сентября 2010

EDIT

Как указал shamittomar, parse_str не будет работать в этой ситуации, разместив соответствующее регулярное выражение ниже. Учитывая, что это похоже на QUERY STRING, используйте функцию parse_str () , которую предоставляет PHP.

UPDATE

Если вы хотите сделать это с помощью регулярного выражения, используя preg_match () , как powertieke указал:

preg_match('/apikey=(.*)/', $var, $matches);
echo $matches[1];

Должен сделать свое дело.

3 голосов
/ 10 сентября 2010

preg_match (); должен быть прямо по вашей аллее

0 голосов
/ 10 сентября 2010

люди так быстро переходят на preg match, когда это можно сделать с помощью обычных строковых функций, которые работают быстрее.

$string = '
expireDays=5
apikey=ABQIAAAAFHktBEXrHnX108wOdzd3aBTupK1kJuoJNBHuh0laPBvYXhjzZxR0qkeXcGC_0Dxf4UMhkR7ZNb04dQ
distancia=15
AutoCoord=1';

//test to see what type of line break it is and explode by that.
$parts = (strstr($string,"\r\n") ? explode("\r\n",$string) : explode("\n",$string));

$data = array();
foreach($parts as $part)
{
    $sub = explode("=",trim($part));

    if(!empty($sub[0]) || !empty($sub[1]))
    {
        $data[$sub[0]] = $sub[1];
    }

}

и используйте $data['apikey'] для вашего ключа API, я бы посоветовал вам wrpaв функции.

Могу поспорить, что это лучший способ анализа строки и гораздо быстрее.

function ParsemyString($string)
{
    $parts = (strstr($string,"\r\n") ? explode("\r\n",$string) : explode("\n",$string));

    $data = array();
    foreach($parts as $part)
    {
        $sub = explode("=",trim($part));

        if(!empty($sub[0]) || !empty($sub[1]))
        {
            $data[$sub[0]] = $sub[1];
        }
    }
    return $data;
}

$data = ParsemyString($string);
0 голосов
/ 10 сентября 2010

Прежде всего, вы не ищете

api==ABQIAAAAJ879Hg7OSEKVrRKc2YHjixSmyv5A3ewe40XW2YiIN-ybtu7KLRQiVUIEW3WsL8vOtIeTFIVUXDOAcQ

, но ищете

apikey=ABQIAAAAJ879Hg7OSEKVrRKc2YHjixSmyv5A3ewe40XW2YiIN-ybtu7KLRQiVUIEW3WsL8vOtIeTFIVUXDOAcQ

Важно знать, всегда ли свойство api-key встречается наконец и если длина значения API-ключа всегда одинакова.В этом случае вы могли бы использовать функцию PHP substr(), которая была бы наиболее простой.

В противном случае вам, скорее всего, понадобится регулярное выражение, которое вы можете передать в функцию PHPs preg_match().Что-то вроде apikey==[a-zA-Z0-9\-], которое соответствует ключу API, содержащему az как в нижнем, так и в верхнем регистре, а также в тире в ключе.Если вы используете функцию preg_match(), вы можете получить совпадения (и, следовательно, ваше значение API-ключа).

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