程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 正則匹配div中的a標記的href 和content

正則匹配div中的a標記的href 和content

編輯:關於C++

 


 

很久後又一次接觸正則,那種似曾相似的感覺,你是不是也有這樣的感覺,這麼小CASE的東西,我一定要把他徹底掌握了,於是花時間看手冊,於是就明白了,於是下次又是似曾相似……

 

總寫下今天用到的地方:

//demo

 

$str = '
  • li
  • 跑步鞋 籃球鞋
tryagin '; // 先匹配出DIV preg_match_all('/ (.*?) /i', $str, $matches); if(!empty($matches)) { $target_content = $matches[0][0]; } //第二次匹配出其中的a標記,注意()是返回匹配的內容 preg_match_all('/(.*?)/i', $target_content, $matches_detail); if(!empty($matches_detail)) { $href_content = $matches_detail[1]; $detail_content = $matches_detail[2]; }
方法:

 

 

/**
    * function: 獲取主題館數據
    * 
    * @param string  $topic    主題名
    * @param string  $pattern  正則模式
    *
    * @return array  $data  $data['href_content']:鏈接信息數組;$data['detail_content']:名稱信息數組
    */
    private function get_topic_data($topic, $pattern1, $pattern2)
   	{
   		$data = array();

   		if( empty($topic) || empty($pattern1) || empty($pattern2))
   		{
   			return $data;
   		}
   		// 構建主題館數據
    	// 獲取整體數據
    	// 獲取頁面ID
        $modpage_id = 0;
        $modpages = $this->Modpage_Model->getAllPages();
        foreach($modpages as $one_page) {
            if ($one_page['department'] == $topic) {
                $modpage_id = $one_page['id'];
            }
        }

        // 取信息
        $version_data = $this->Modpage_Model->getCurrentPageVersion($modpage_id);

        $page_info_raw = $this->Modpage_Model->getVersionData($modpage_id, $version_data['version']);

        // 生成數據
        foreach ($page_info_raw as $k => $v)
        {
        	//兒童單獨處理
        	if($topic == 'children')
        	{
        		if($v['module_id'] == 1 && $v['desc'] == '快速找寶貝')
        		{	
        			$parse_str = $v['content'];
        			break;
        		}
        	}
        	else
        	{
        		// 去後台副導航數據
        		if($v['module_id'] == 4)
	        	{
	        		$parse_str = $v['content'];
	        		break;
	        	}
        	}
        }

    	// 匹配主題館需要的數據
        // 清洗數據
		$parse_str = $this -> clearData($parse_str);
    	preg_match_all($pattern1, $parse_str, $matches);

        if(!empty($matches))
        {
            $target_content = $matches[0][0];
        }

        // 替換主機名
		$target_content = str_replace($this -> website, TOUCH_URL, $target_content);

		// 清洗數據
        $target_content = $this -> clearData($target_content);

        preg_match_all($pattern2, $target_content, $matches_detail);

        if(!empty($matches_detail))
        {
            $data['href_content'] = $matches_detail[1];
            $data['detail_content'] = $matches_detail[2];
        }
        return $data;
   	}

   	/**
    * function: 清洗數據(過濾字符串中的換行符、制表符)
    * 
    * @param string  $str    初始字符串
    *
    * @return string  $str
    */
   	private function clearData( $str )
   	{
   		if( empty($str) )
   		{
   			return '';
   		}
   		// 清除換行符
   		$str = str_replace(
, '', $str);
   		// 清除換行符 
		$str = str_replace(
, '', $str);
		// 清除制表符
		$str = str_replace(	, '', $str); 
		$str = trim( $str );
		return $str;
   	}

//測試方法

 

 

/**
    * 首頁入口
    * 
    */
    public function index() {

    	$data = array();
    	$result = array();
    	
    	// 獲取主題館信息

    	// 主題館原始數據  array('部門'=>array('類型','正則一','正則二'))
        $topic_name_arr = array(
        	'sports' => array('sport','/
(.*?) /i','/(.*?)/i'), 'womenshoes' => array('women','/ (.*?) /i','/(.*?)/i'), 'menshoes' => array('man','/ (.*?) /i','/(.*?)/i'), 'outdoor' => array('outdoor','/ (.*?) /i','/(.*?)/i'), 'children' => array('children','/(.*?)/i','/(.*?)/i'), ); // 組織數據 foreach ($topic_name_arr as $type => $pattern) { $result = $this -> get_topic_data( $type, $pattern[1], $pattern[2] ); $data['data'][$pattern[0]] = $result; } $h_data['jspath'] = 'index'; $this->load->view(touch/common/header,$h_data); $this->load->view(touch/index/index,$data); $this->load->view(touch/common/footer); }

 

 

應用場景:

 




全部男鞋

休閒鞋

正裝鞋

商務鞋

涼鞋

戶外鞋

帆布鞋

板鞋

男靴

棉鞋

熱門品類

1月新品

工裝鞋

牛津鞋

男靴

伐木鞋

帆船鞋

商務皮鞋

增高鞋

軍警靴



 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved