PHP分隔字符串的正則表達式使用

本人PHP基礎很薄弱,在此記錄一些平時搜到且能使用的一些方法,一爲記錄二爲分享。


【SEO優化篇】

需求:根據網站keywords關鍵詞分割成數組,並實現隨機展現,實現一個頁面每次刷新都會得到不同的url關鍵詞展示

實現:我網站的構成由兩大部分,動態新聞頁+單頁面構成,每個分類都包含幾個獨立的SEO信息字段,以此匹配不同頁面的不同關鍵詞。

代碼(TP3框架):

 1、先獲取兩大類分類數據:


$page = $PM->field('id,title,listorder,seo_title')->order('listorder DESC')->select();
    //判斷是否有子菜單 單頁面數據庫沒有設置子菜單選項,暫時無需做判斷,僅重寫typedir字段,避免空值
    if ($page) {
		foreach ($page as $k => $v) {
			$page[$k]['typedir'] = empty($v['typedir'])?$PY->getAllPY($v['title']):$v['typedir'];//$Py爲漢字轉中文類,各位自行網上搜索
			$page[$k]['seo_title'] = empty($v['seo_title'])?$v['title']:$v['seo_title'];//判空,避免結果爲空
			$page[$k]['sort'] = $v['by'];
		}
	}
$category = $CM->field('id,title,typedir,sort,seo_title')->where(array('pid'=>'0'))->order('sort DESC')->select();
	if ($category) {
		foreach ($category as $k => $v) {
			$category[$k]['seo_title'] = empty($v['seo_title'])?$v['title']:$v['seo_title'];
			$category[$k]['typedir'] = empty($v['typedir'])?$v['title']:$v['typedir'];
		}
	}

2、重新排序根據sort字段DESC,這樣後臺可以控制每個欄目顯示的位置

$list_nav = array_merge($page,$category);
//重新根據sort排序數組
$index=array();
if ($list_nav) {
	foreach ($list_nav as $key => $v) {
		$index[$key]=$v['sort'];
		}
	}
		
array_multisort($index,SORT_DESC,$list_nav);

3、分割標題爲數組

#先獲取標題數組,過濾字符
$seo_title = array();
if ($list_nav) {
	$pattern="/[\\|\\.,-\\/\\\_]/";  //注意分隔符需要是英文符號
	    foreach ($list_nav as $k => $v) {
		if ($v['id'] != 3) {
			$seo_title[$k]['title'] = preg_split($pattern,$v['seo_title']);
			$seo_title[$k]['typedir']=$v['typedir'];
		}
				
        }
}

4、隨機生成導航標題

if ($seo_title) {
	foreach ($seo_title as $k => $v) {
		$id = array_rand($v['title']); //通過array_rand函數隨機獲取數組序號
		$seo_title[$k]['navtitle']=$v['title'][$id]; //再根據序號獲取對應的內容
	}
}
5、最終的數據已經實現,剩下的就是模板頁調用了,typedir爲欄目url,navtitle爲標題名稱,這樣就實現了每次刷新都獲取不同的關鍵詞名稱


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章