2

私はおそらくここで愚かなことをしているだけですが、エラーの原因はわかりません。PHP で記述しているページネーション関数の for ループで解析エラーが発生します。完全なエラーはこちらです。

PHP Parse error:  parse error, expecting `')'' in /Users/danielsgroves/Sites/Gouland/search.php on line 95

エラーが発生している完全な関数は次のとおりです。

private function pagination($scope, $keyword)
{
    $pages = 15;

    $pagination = '<ul>';
    for ($i = 0; $i < $pages; i++) {
        $pagination .= "<li><a id=\"a$i\" class=\"na\" href=\"?q=$keyword&scope=$scope&page=$i\">$i</a></li>";
    }
    $pagination .= '</ul>';

    return $pagination;
}

私が言ったことからすでに確立しているかもしれませんが、エラーで言及されている95行目for ($i = 0; $などです。完全なクラスファイルは以下のとおりです。コメントが役立つ場合に備えて、コメントを含めました。

Class BingSearch
{
private $APPID      = "SOME API KEY";

private $keyword;
private $scope;
private $page;
private $count;
private $offset;

private $response;
private $results;

/**
 * Set the object up with required information to perform the search. Once 
 * the object is setup the getResults() method should be called to display
 * the results where required. 
 * @param (String) $keyword = The search string
 * @param (String) $scope = The scope of the search; web, ticket, image, 
 * video, news
 * @param (Int) $page = The required results page.
 * @public
 */
public function __construct($keyword, $scope, $page)
{
    $this->keyword  = urlencode($keyword);
    $this->scope    = $scope;
    $this->page     = $page;
}

/**
 * Runs the necessary internal methods to fetch and display the required 
 * results.  Required information should be provided into the constructor 
 * on object creation.  This function will not return any information,
 * but 'echo' is straight out onto the page. Each returned result will
 * be placed inside it's own HTML5 <article> tag.  Simply call this 
 * method from the location in your templates of where you would like
 * the search results to be placed.  
 * @public
 */
public function getResults()
{
    $this->fetchFeed();
    $this->generateWebResults();
}

/**
 * Fetches the JSON feed from the Google bing API.  Uses private class
 * variables for the required information. 
 * @private
 */
private function fetchFeed()
{
    $request        = "http://api.search.live.net/json.aspx?Appid=$this->APPID&query=$this->keyword&sources=$this->scope&$this->count&$this->offset";
    $this->response = file_get_contents($request);
    $this->results = json_decode($this->response);
}

/**
 * Formats the returned JSON feed by adapting it for HTML. Each result is 
 * placed within an <article> tag.  The title is an <h3> which also links
 * to the actual result. <span class="cached"> is the cache link and 
 * the description is placed within a <p>.  Finally, <span class="fullLink">
 * contains the URL for the content, which is also linked.  
 * @private
 */
private function generateWebResults()
{
    if($this->results->SearchResponse->Web->Total != 0) {   

        foreach($this->results->SearchResponse->Web->Results as $value) {

            if (!isset($value->Description))
                $value->Description = '';

            echo "<article>";
            echo "<h3><a href=\"$value->Url\" title=\"Go to $value->Title\">$value->Title</a></h3>";
            echo "<span class=\"cached\"><a href=\"$value->CacheUrl\" title=\"View Cached Version\">Cached</a></span>";
            echo "<p>" . strip_tags($value->Description) . "</p>";
            echo "<span class=\"fullLink\"><a href=\"$value->Url\" title=\"Go to $value->Title\">$value->Url</a></span>";
            echo "</article>";

        }

    }
}

private function pagination($scope, $keyword)
{
    $pages = 15;

    $pagination = '<ul>';
    for ($i = 0; $i < $pages; i++) {
        $pagination .= "<li><a id=\"a$i\" class=\"na\" href=\"?q=$keyword&scope=$scope&page=$i\">$i</a></li>";
    }
    $pagination .= '</ul>';

    return $pagination;
}
}

関数を使用するには、これが実行される PHP です。

require 'search.php';
$search = new BingSearch($query, $source, $query);
$search->getResults();

誰かが私を正しい方向に向けたいと思っていますか?それはおそらく、あまりにも長い間見た後に見逃した本当に小さなものです.

ありがとう、

ダン。

4

4 に答える 4

6
for ($i = 0; $i < $pages; i++)

$ を忘れました。i++ を $i++ に置き換えてください。

于 2012-07-16T09:13:12.907 に答える
2

あなたのループ

for ($i = 0; $i < $pages; i++) {
        $pagination .= "<li><a id=\"a$i\" class=\"na\" href=\"?q=$keyword&scope=$scope&page=$i\">$i</a></li>";
    }

ループに $ がありません

for ($i = 0; $i < $pages; $i++) {
        $pagination .= "<li><a id=\"a$i\" class=\"na\" href=\"?q=$keyword&scope=$scope&page=$i\">$i</a></li>";
    }
于 2012-07-16T09:13:09.997 に答える
2

増分のドル記号を忘れました$i

private function pagination($scope, $keyword)
{
    $pages = 15;

    $pagination = '<ul>';
    for ($i = 0; $i < $pages; $i++) {
        $pagination .= "<li><a id=\"a$i\" class=\"na\" href=\"?q=$keyword&scope=$scope&page=$i\">$i</a></li>";
    }
    $pagination .= '</ul>';

    return $pagination;
}
于 2012-07-16T09:15:15.730 に答える
0

その行で、に置き換えi++ます$i++。$ 文字がありません。

于 2012-07-16T09:19:13.473 に答える