当前位置: 首页>>代码示例>>PHP>>正文


PHP Uri::factory方法代码示例

本文整理汇总了PHP中Zend\Uri\Uri::factory方法的典型用法代码示例。如果您正苦于以下问题:PHP Uri::factory方法的具体用法?PHP Uri::factory怎么用?PHP Uri::factory使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Zend\Uri\Uri的用法示例。


在下文中一共展示了Uri::factory方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: setServerUrl

 /**
  * Sets server url (scheme and host-related stuff without request URI)
  *
  * E.g. http://www.example.com
  *
  * @param  string $serverUrl                    server URL to set (only
  *                                              scheme and host)
  * @throws \Zend\URI\Exception                   if invalid server URL
  * @return \Zend\View\Helper\Navigation\Sitemap  fluent interface, returns
  *                                              self
  */
 public function setServerUrl($serverUrl)
 {
     $uri = \Zend\Uri\Uri::factory($serverUrl);
     $uri->setFragment('');
     $uri->setPath('');
     $uri->setQuery('');
     if ($uri->valid()) {
         $this->_serverUrl = $uri->getUri();
     } else {
         $e = new \Zend\URI\Exception(sprintf('Invalid server URL: "%s"', $serverUrl));
         $e->setView($this->view);
         throw $e;
     }
     return $this;
 }
开发者ID:stunti,项目名称:zf2,代码行数:26,代码来源:Sitemap.php

示例2: ping

 /**
  * Pingback
  *
  * @param string $source ページのPing送信用のアドレス
  * @param string $target ページのPing待受用のアドレス
  * @return int
  */
 public function ping($source, $target)
 {
     // Zend\Uri\Uriオブジェクトを生成
     $source_url = Uri::factory($source);
     $target_url = Uri::factory($target);
     // 無効なアドレス
     if (!$target_url->isValid()) {
         return self::RESPONSE_FAULT_TARGET_INVALID;
     }
     if (!$source_url->isValid()) {
         return self::RESPONSE_FAULT_GENERIC;
     }
     if ($target_url->getHost() === $source_url->getHost()) {
         // ターゲットとソースのホストが一緒
         // TODO: 同じドメインのサイトの場合、同じサイトとみなされる
         return self::RESPONSE_FAULT_SOURCE;
     }
     // 相手のサイトに接続
     $source_client = new Client($source_url);
     $source_response = $source_client->request(Client::GET);
     // 接続できたかをチェック
     if (!$source_response->isSuccessful()) {
         return self::RESPONSE_FAULT_SOURCE;
     }
     // 相手のサイトの中身を取得
     $source_body = $source_response->getBody();
     // 中身を取得できない
     if (!$source_body) {
         return self::RESPONSE_FAULT_SOURCE;
     }
     if ($target_url->getHost() !== $source_url->getHost() && strpos($source_body, $source_url) === false) {
         // ソース URI のデータにターゲット URI へのリンクが存在しないため、ソースとして使用できない。
         return self::RESPONSE_FAULT_SOURCE_LINK;
     }
     // 相手サイトのタイトルを取得(XMLとして処理した方がいい?)
     $source_titles = array();
     preg_match('/<title>([^<]*?)</title>/is', $source_body, $source_titles);
     // タイトルが存在しないUntitled
     $source_title = empty($source_titles[1]) ? self::UNTITLED_TITLE : $source_titles[1];
     // ターゲットのクエリを取得(自サイト)
     $query = $target_url->getQuery();
     if (empty($query)) {
         // http://[host]/[pagename]の場合(スラッシュは再エンコード)
         $r_page = str_replace('/', '%2F', $target_url->getPath());
         // $url_suffixが含まれる場合、正規表現でそこを削除
         //$page = empty($url_suffix) ? $r_page : preg_replace('/'.$url_suffix.'$/', '', $r_page);
         $page = rawurldecode($r_page);
         unset($r_page);
     } else {
         // ターゲットに=が含まれる場合はページではないので無効
         if (strpbrk($query, '=')) {
             return self::RESPONSE_FAULT_TARGET_INVALID;
         }
         $page = $query;
     }
     // ページ名からWikiを呼び出す
     $wiki = Factory::Wiki($page);
     if (!$wiki->isValied()) {
         // 無効なページ名
         return self::RESPONSE_FAULT_TARGET_INVALID;
     }
     if (!$wiki->isReadable()) {
         // 読み込み不可なページ
         return self::RESPONSE_FAULT_ACCESS_DENIED;
     }
     // PingBackファイルを読み込む
     $pb = new PingBackFile($page);
     $lines = $pb->get();
     if (count($lines) !== 0) {
         foreach ($lines as $line) {
             list($time, $url, $title) = explode("\t", $line);
             if ($url === $target_url) {
                 // すでに登録されている
                 return self::RESPONSE_FAULT_ALREADY_REGISTERED;
             }
         }
     }
     // 新しいデーターを登録
     $lines[] = join("\t", array(UTIME, $source_url, $source_title));
     // 保存
     $pb->set($lines);
     return self::RESPONSE_SUCCESS;
 }
开发者ID:logue,项目名称:pukiwiki_adv,代码行数:90,代码来源:PingBack.php


注:本文中的Zend\Uri\Uri::factory方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。