troubleshooting Question

Preg_match url from string in an array and return value

Avatar of dthardy
dthardyFlag for United States of America asked on
Regular ExpressionsPHP
5 Comments2 Solutions519 ViewsLast Modified:
I am parsing xml into an array and trying to extract the url from a string variable containing html.  I want to create a variable with each url value and output the results.  I can't seem to get the output correct.

The string in the array with the html code is - linkCodeHTML
The variable I have for the extracted url is - linkURL

I have posted my code below.
<?php

    $developerKey = "00b9";
    $websiteId = "212";

    $ini = ini_set("soap.wsdl_cache_enabled","0");

    try {

        $client = new SoapClient("https://linksearch.api.cj.com/wsdl/version2/linkSearchServiceV2.wsdl", array('trace'=> true));

        //Enter the request parameters for LinkSearch below.
		//For detailed usage of the parameter values, please refer to CJ Web Services online documentation

        $results = $client->searchLinks(array("developerKey" => $developerKey,
                                                "token" => '',
                                            "websiteId" => $websiteId,
                                        "advertiserIds" => 'joined',
                                             "keywords" => '',
                                             "category" => '',
                                             "linkType" => 'Text Link',
                                             "linkSize" => '',
                                             "language" => 'en',
                                      "serviceableArea" => 'US',
                                        "promotionType" => '',
                                   "promotionStartDate" => '',
                                     "promotionEndDate" => '',
                                               "sortBy" => '',
                                            "sortOrder" => 'asc',
                                              "startAt" => 0,
                                           "maxResults" => 100));


		//The loop below can be used to parse the results recieved in the response
        print "Your link search generated ".$results->out->totalResults." results\n";

		        echo "Displaying the first 10 results returned\n";
		        foreach ($results->out->links->LinkDetail as $linkDetail) {
		      
		       
		        preg_match ("/a[\s]+[^>]*?href[\s]?=[\s\"\']+".
                    "(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/",$linkDetail->linkCodeHTML
                    , $linkURL);
		        
		        
		            echo "Advertiser Name: ".$linkDetail->advertiserName."\n";
		            echo "Category: ".$linkDetail->category."\n";
		            echo "Click Commission: ".$linkDetail->clickCommission."\n";
		            echo "Link Code HTML: ".$linkDetail->linkCodeHTML."\n";
		            echo "Link Code JavaScript: ".$linkDetail->linkCodeJavascript."\n";
		            echo "Link Description: ".$linkDetail->linkDescription."\n";
		            echo "Link Destination: ".$linkURL."\n";
		            echo "----------------------\n";
		        }
        echo "\n";

    } catch (Exception $e){
        echo "There was an error with your request or the service is unavailable.\n";
        print_r ($e);
    }
?>

Open in new window

ASKER CERTIFIED SOLUTION
Join our community to see this answer!
Unlock 2 Answers and 5 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 2 Answers and 5 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros