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为标题名称,这样就实现了每次刷新都获取不同的关键词名称


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41000837/article/details/80310283
个人分类: Php ThinkPhp
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭