0

$var="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 ";

in that string only i want "api==ABQIAAAAJ879Hg7OSEKVrRKc2YHjixSmyv5A3ewe40XW2YiIN-ybtu7KLRQiVUIEW3WsL8vOtIeTFIVUXDOAcQ"; plz guide me correctly;

1

4 Answers 4

5

EDIT

As shamittomar pointed out, the parse_str will not work for this situation, posted the proper regex below. Given this seems to be a QUERY STRING, use the parse_str() function PHP provides.

UPDATE

If you want to do it with regex using preg_match() as powertieke pointed out:

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

Should do the trick.

Sign up to request clarification or add additional context in comments.

1 Comment

Interesting, I thought it would work anyways, well I updated the answer and posted the regex used to pull the apikey.
3

preg_match(); should be right up your alley

Comments

0

people are so fast to jump to preg match when this can be done with regular string functions thats faster.

$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];
    }

}

and use $data['apikey'] for your api key, i would also advise you to wrpa in function.

I can bet this is a better way to parse the string and much faster.

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);

4 Comments

Your EOL check is wrongly implemented because \n is part of \r\n.
Speed of development vs Speed of execution... But hey, whatever floats your boat :)
so you would rather make slow code because it don't take you as long to do :/ idle some ?
Depends on how much/often and where the code is used. Its always a trade-off. Usually speed of development is preferred (These days)...
0

First of all, you are not looking for

api==ABQIAAAAJ879Hg7OSEKVrRKc2YHjixSmyv5A3ewe40XW2YiIN-ybtu7KLRQiVUIEW3WsL8vOtIeTFIVUXDOAcQ

but you are looking for

apikey=ABQIAAAAJ879Hg7OSEKVrRKc2YHjixSmyv5A3ewe40XW2YiIN-ybtu7KLRQiVUIEW3WsL8vOtIeTFIVUXDOAcQ

It is important to know if the api-key property always occurs at the end and if the length of the api-key value is always the same. I this is the case you could use the PHP substr() function which would be easiest.

If not you would most probably need a regular expression which you can feed to PHPs preg_match() function. Something along the lines of apikey==[a-zA-Z0-9\-] Which matches an api-key containing a-z in both lowercase and uppercase and also allows for dashes in the key. If you are using the preg_match() function you can retrieve the matches (and thus your api-key value).

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.