月度归档: 2021 年 12 月

  • WordPress Dashboard后台 非插件 纯代码 实现自定义字段过滤

    前面我们介绍了 WordPress 主题/插件开发 自定义文章分类 筛选功能 图文教程

    下面我们记录一下如何在后台实现过滤自定义字段,将以下代码放入 functions.php 文件中代码段如下:

    add_filter( 'parse_query', 'jadmin_posts_filter' );
    add_action( 'restrict_manage_posts', 'jadmin_posts_filter_restrict_manage_posts' );
     
    function jadmin_posts_filter( $query )
    {
        global $pagenow;
        if ( is_admin() && $pagenow=='edit.php' && isset($_GET['ADMIN_FILTER_FIELD_NAME']) && '' != $_GET['ADMIN_FILTER_FIELD_NAME']) {
            $query->query_vars['meta_key'] = sanitize_text_field($_GET['ADMIN_FILTER_FIELD_NAME']);
        if (isset($_GET['ADMIN_FILTER_FIELD_VALUE']) && '' != $_GET['ADMIN_FILTER_FIELD_VALUE'])
            $query->query_vars['meta_value'] = sanitize_text_field($_GET['ADMIN_FILTER_FIELD_VALUE']);
        }
    }
     
    function jadmin_posts_filter_restrict_manage_posts()
    {
        global $wpdb;
        $sql = 'SELECT DISTINCT meta_key FROM '.$wpdb->postmeta.' ORDER BY 1';
        $fields = $wpdb->get_results($sql, ARRAY_N);
    ?>
    <select name="ADMIN_FILTER_FIELD_NAME">
    <option value=""><?php _e('Filter By Custom Fields', 'jiloc'); ?></option>
    <?php
        $current = isset($_GET['ADMIN_FILTER_FIELD_NAME'])? $_GET['ADMIN_FILTER_FIELD_NAME']:'';
        $current_v = isset($_GET['ADMIN_FILTER_FIELD_VALUE'])? $_GET['ADMIN_FILTER_FIELD_VALUE']:'';
        foreach ($fields as $field) {
            if (substr($field[0],0,1) != "_"){
            printf
                (
                    '<option value="%s"%s>%s</option>',
                    $field[0],
                    $field[0] == $current? ' selected="selected"':'',
                    $field[0]
                );
            }
        }
    ?>
    </select> <?php _e('Value:', 'jiloc'); ?><input type="TEXT" name="ADMIN_FILTER_FIELD_VALUE" value="<?php echo $current_v; ?>" />
    <?php
    }
  • php代码实现 WordPress禁止使用前端主题访问 维护模式

    php代码实现 WordPress禁止使用前端主题访问 维护模式

    最近在给客户弄一个基于WordPress的OA系统,前台禁止访问。仅供后台使用。这边我们记录一下,如何禁止使用前端主题。开启维护模式。

    为什么要启用维护模式?

    • 可以避免访客在打开博客时,因为折腾出现一些不怎么美好的情况。
    • 它可以帮助您正常地在网站的后端调整网站设置,主题或插件,而不会让访问者看到您的网站在维护时的全部细节。

    开启维护模式也很简单,我们需要打开WordPress当前模板目录中的functions.php

    添加如下代码:

    function maintenance_mode() {       
        if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {
            wp_die('站点维护中,请稍后再来.');
        } 
    }
    add_action('get_header', 'maintenance_mode');

    保存上传就开启了维护模式。

  • 阿里云ECS云服务器云服务器ECS年终特惠  云服务器低至38元/年起

    阿里云ECS云服务器云服务器ECS年终特惠 云服务器低至38元/年起

    马上快到年底了,阿里云也在搞促销活动,我们来看看都有哪些。

    活动截止到12月31日。活动包括爆款秒杀、新人、老用户等,这次给老用户的力度还是比较大的。

    秒杀专区

    1核2G1MB的云服务器低至38元/年起

    阿里云购买直达链接:https://www.jiloc.com/go/aliyun-act

    我们可以看到最低年付云服务器38元,这真的是刷新云服务器的最低。

    爆款促销

    当然这些活动都是针对新客的。

    老用户专享

    老用户续费专区

    总结,这次的阿里云截止到月底的年终优惠活动主要是ECS云服务器,如果有需要的可以参考选择。力度还是比较大的。

  • 腾讯云Qcloud学生服务器新老同学优惠促销 3年轻量服务器低至150元 可选节点 北京/上海/广州

    腾讯云Qcloud学生服务器新老同学优惠促销 3年轻量服务器低至150元 可选节点 北京/上海/广州

    我们站长朋友选择服务器会是绝对的勤俭持家风格的,哪里有促销活动,哪里能省钱的肯定会去挖掘出来。对于国内云服务商的针对学生资格的促销活动一直是有的,今天看到群友估计在哪里看到一些网站发布的学生促销信息,就有在商量如何去搞定到学生资格然后去薅商家的低价云服务器。老季看到腾讯云学生服务器低至年付50元三年150元,这个对于学生资格来说是便宜的,其实看这个价格老季觉得也没便宜多少。

    在之前双十一的时候4G8M轻量服务器三年才198元,配置比学生套餐的服务器更好。但是这些原本的低价活动已经结束,当然这个活动是针对学生资格的,如果我们有学生资格可以看看。

     直达链接 – 腾讯云学生促销活动

    学生促销活动需要满足25岁以下免学生认证,这个是需要通过学信网认证的。

    新同学首单

    如果我们是新同学首单的话,可以优惠力度大一些。

    老同学

    年龄在25岁以下 或 通过学生认证的学生用户,购买后即可获得3次以购买价续费的资格,优惠续费需在本页面进行,每次可选时长为:3、6、12个月。首单特惠商品不参与同价续费。

    校园活动中,“首单特惠”商品仅限腾讯云产品新用户(该产品无订单记录或累计订单金额为0)购买,学生产品新用户可从所有规格中六选一;“新老同享”商品,学生用户可从中四选一。不支持同时购买多款、不支持更换已购买套餐。

    如果我们是新用户首单的话,建议我们可以看看”腾讯云服务器首单新客爆款促销 2G5M轻量服务器低至年50元“的活动,配置套餐不比学生低,但是价格感觉力度还大一些,所以我们如果是学生资格的话对比看看,是否一定要用学生资格。

    腾讯云双12限时促销活动 年付74元 新客个人和企业优惠力度明显

  • 外贸主机SiteGround 购买图文教程

    前文中我们介绍了 SiteGround WordPress外贸主机首选供应商 ,下面来说一下SiteGround主机的购买步骤

    第 1 步:选择托管计划

    打开官网地址:https://www.jiloc.com/go/siteground ,选择对应的套餐

    第 2 步:选择域名 

    可以选择购买新域,或使用现有域进行注册。进行接入

    第 3 步:查看并完成订单

  • SiteGround WordPress外贸主机首选供应商

    SiteGround:国外最好的WordPress外贸建站主机,全球用户200万。

    作为国内最早全面介绍这款主机的人,不得不说的是,SiteGround被一灯带火了,就连那些疯狂鼓吹bluehost的人也陆续开始跟风,把他们曾今吹上天的bluehost贬的一文不值,何必呢!

    SiteGround的口碑怎么样?

    SiteGround成立于2004年,在EIG统治的国外虚拟主机界,算是一股清流。不同于bluehost和hostgator,SiteGround更注重产品服务和性价比。

    SiteGround全球用户200万,不熟悉主机的人可能对这个数字没什么概念,其实200万已经是全球第一阶梯了,因为阿里云也只有230万,而bluehost近6年一直都在200万徘徊,几乎没有增长。

    如果只看用户数的话,SiteGround还不至于被强烈推荐,但如果看用户满意度的话就不一样了,SiteGround全球用户满意度高达98%,每100人里有98人说它好用。

    SiteGround不仅用户满意度高,还支持上百种CMS外贸自建站程序,市面上稍微有点名气的自建站程序,都推荐大家使用SiteGround主机,这其中就包括全球最大的自建站程序WordPress。

    除了wordpress,SiteGround还被cloudflare,drupal,joomla,yoast,sucuri,wprocket,WPML,themeforest,woocommerce,elementor推荐,是全球唯一获此殊荣的主机公司。

    SiteGround的速度怎么样?

    SiteGround的速度快不快?我使用SiteGround超过40个月,不吹不黑,使用感受如下。

    • 国内访问速度:不如国内主机,但服务器响应时间和后台访问,比其它国外主机要快。
    • 国外访问速度:wp默认安装,GTmetrix评测0.8秒,Pindom评测483毫秒,妥妥秒开。

    总体来说,SiteGround的速度比Bluehost,HostGator,GoDaddy,Fastcomet,InMotion,Hostinger,Hostwinds,阿里云美国机房要更快,因为SiteGround的服务器技术世界一流。

    • 分布式云主机,SSD固态硬盘,比HHD普通硬盘快20倍
    • Nginx直接交付静态内容,有效改善内存缓存,适合大流量网站
    • 独有的SuperCacher缓存加速机制,3个级别的网站加速
    • 独有的SG Optimizer优化插件,可以GZIP压缩,合并JavaScript和CSS文件
    • Cloudflare CDN网站加速,全球194个节点,让你的网站打开更快
    • HTTP/2网络协议,TLS 1.3,OCSP和QUIC协议,加快网站打开速度.
    • HHVM和PHP版本业内第一,极佳的性能让PHP执行速度更快

    SiteGround的功能有哪些?

    SiteGround是WordPress官方推荐主机,功能配套非常齐全。

    • 自主研发控制面板,wordpress一键安装,自动更新漏洞
    • 免费SSL https,免费Cloudflare CDN加速,免费企业邮箱
    • 免费送45个高质量wordpress主题,配套elementor建站编辑器
    • 独家开发SG optimizer,wp starter,wp migrator高级插件
    • 三大洲四个机房,TTFB全球平均值148毫秒,SEO优化必备
    • 99.99%的正常运行时间,IDS/IPS反黑客系统,安全级别高
    • 垃圾邮件专家,SSH访问,热链保护,管理员IP识别和流量监控
    • 每天自动备份,一键备份还原,wp staging一键推送副本

    不同于LinodeVultrDigital Ocean等VPS裸机,SiteGround能满足你对WordPress外贸建站的所有功能需求,就算你是新手也可以无困难操作,让你少走N条弯路。

    总结

    如果你想用WordPress外贸建站,SiteGround是一定要买的。

    SiteGround对比其它虚拟主机,速度更快、价格实在、功能更全,正常运行时间,安全级别和售后服务都是世界一流,我一直在寻找最适合外贸建站的主机空间,最后找到了SiteGround。

  • 腾讯云双12限时促销活动 年付74元  新客个人和企业优惠力度明显

    腾讯云双12限时促销活动 年付74元 新客个人和企业优惠力度明显

    腾讯云商家已经将活动作为常态化,平时没有节日促销的时候讲常年的促销策略发布出来补贴日常活跃度。每逢年中、年末、双十一等活动会有单独的策划方案,当然实际上策划文案都是差不多的,只是双十一的产品丰富度多一些。老季看到他们家的双十二活动经过改改文案后发布,个人和企业新客力度还是有的。

    有网友需要的轻量服务器8M方案这次也有,需要222元三年。之前双十一的时候我买的是198元三年,当然稍微贵一点应该也可以接受。

     直达链接 – 双12腾讯云活动

    活动截止到12月31日,新客优惠力度明显,当然有的品类是只要首购也可以,不一定必须是新用户。

    第一、限时秒杀活动

    云服务器低至年50元,也包括数据库、短信、CDN和对象存储流量包。

    第二、企业专场主题

    企业产品优惠力度明显,老季有介绍到的 “腾讯云服务器首单新客爆款促销 2G5M轻量服务器低至年50元“活动相似,企业优惠活动包括轻量服务器、云服务器、数据库,等等品类比较多。

    总结,如果我们在之前双十一没有采购的,这次双十二也可以采购。当然促销活动一直是有的,我们也没有必要囤货。同时,如果有需要腾讯云香港服务器可以看看 腾讯云全球购

  • WordPress 自定义类型文章 从url地址中删除 taxonomy 分类How to remove custom taxonomy-base from URL in WordPress

    WordPress 自定义类型文章 从url地址中删除 taxonomy 分类How to remove custom taxonomy-base from URL in WordPress

    最近有小伙伴找到老季,想要把自定义ulr路径中把taxonomy自定义类型的分类删除。例如:

    https://www.jiloc.com/projects_cat/fine-led-display/

    变成

    https://www.jiloc.com/projects_cat/fine-led-display/

    下面我们给出代码解决办法:

    register_taxonomy(
           'travel-category', //taxonomy base
           'destination', // custom post type
           'rewrite' => array( 'slug' => '/', 'with_front' => FALSE )
    );

    如果出现404,在 设置固定链接 中重新保存即可。

  • mds、mds_stores、mdworker 占用大量 cpu 和内存

    mds、mds_stores、mdworker 占用大量 cpu 和内存

    最近一段时间老季的 MacBook Pro 又出现了 CPU 占用过高,风扇狂转、机身发烫的问题,看了下 Activity Monitor 发现是 mds_stores 导致的,直接杀死进程还不起效果,这里分享下苹果官方客服给的解决方案,希望对大家有所帮助。

    mds 和 mds_stores 都是 Mac 中 Spotlight(聚焦)使用的进程,所以网上很多教程都建议直接把 Spotlight 关了,这样肯定是可以解决问题的,但是相应的你的 Spotlight 就不能用了,所以不推荐大家使用这个解决方案。

    1、在终端中键入命令

    sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist

    2、重启 Mac

    3、确认您的电脑未开启 Time Machine 功能的情况下,依次执行以下重建命令:

    sudo mdutil -i off
    sudo mdutil -E
    sudo mdutil -i on

    之后需要等待完成重建,老季亲测全部弄完后没有再出现 mds_stores 占用 CPU 过高导致风扇运转、发烫的问题。

  • 使用宝塔面板快速部署Django项目

    使用宝塔面板快速部署Django项目

    这是一个专门为新得不能再新的新手准备的教程,能快速让新手部署Django,让新手少走一些不必要的弯路,节省大量时间。之前发布了几篇文章,教大家如何在一些常见的操作系统下部署Django项目,得到了不少网友支持。部署Django项目我们一般都推荐使用Linux操作系统,这样能更加效率的运行Django。教程发布出来之后,有很多网友联系上了我,说是新手不会使用Linux操作系统,不熟悉Linux命令。奈何,最终还是我一个人扛下了所有,一一远程帮他们解决。

    刚开始的时候,人少还好说,后来加我的人越来越多,都是问一些基本的常识的问题。最终促使我写了这篇文章,这篇文章是基于Centos操作系统下使用宝塔面板来部署Django项目。全程只使用几个命令,让不管再怎么新的新手也能快速部署Django项目。言归正传,下面就教大家如何部署。

    场景:假设我们刚购买了一台新的Linux服务器,已经安装好Centos操作系统。

    1、在服务器供应商管理后台安全组里开放必要端口。

    国内的云服务器是把所有的端口给屏蔽了的,如果想使用的话需要自己在服务器提供商后台里的安全组里开放端口。比较常见的是阿里云、腾讯云、百度云等。大多数的服务器商是不需要做此操作的。我们需要开通的端口一般为:80、443、21、22、3306、8888,这些端口具体的用处我就不一一介绍了,但8888端口主要是用于访问宝塔的。

    2、下载Xshell软件。

    Xshell软件主要是用来登录Linux服务器的,使用方法很简单,自己百度下载就Ok。我们下载安装好之后,就登录服务器。

    3、系统根目录上创建WWW目录。

    终端输入命令:

    mkdir /www

    这个目录主要是用于存放宝塔面板和网站(项目)数据的。如果服务器有多个数据盘,建议把磁盘挂在到 /www目录下。

    4、安装宝塔面板

    我们直接终端输入下面的命令安装宝塔面板:

    yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

    更多的信息可以访问下面的地址查看:https://www.bt.cn/bbs/thread-19376-1-1.html

    安装过程很简单,就不做过多介绍。这个时候我们可以泡点茶,喝点茶,做等就好。安装成功之后就看到如下类似的信息:

    20180413103653.jpg

    这个是宝塔面板的登录地址、用户名和登录密码,你需要把这个复制保存起来。

    更多关于宝塔的其它操作,可以直接在终端输入:bt,回车然后得到如下的选项:

    200606024440.jpg

    我们在浏览器里访问之前保存的那个地址,那个地址是用来登录宝塔面板,管理宝塔面板的。

    dfdfdfdf.jpg

    5、安装常用的WEB服务组件。

    登录成功岳我们可以看到如下界面:

    0200606005717.jpg

    这里面只有Nginx是必须要安装的,如果你使用的是Mysql数据库,那么Mysql也勾选上(留意Django3.0之后的版本不再支持Mysql5.5版本),其它的你可以根据自己的需求来决定是否安装。后面如果想安装其它的,也可以在软件管理里安装。留意:软件名后面的三角符号点击它可以选择软件的版本。新手建议默认即可。选择好之后,点击一键安装。然后继续喝茶做等。

    6、安装Python项目管理插件

    这个安装成功之后,我们在左边的‘软件商店’里选择‘宝塔插件’,找到‘Python项目管理’这个插件进行安装。

    5.png
    6.png

    7、安装项目所需要的Python版本。

    安装成功之后,我们点击设置。

    8.png

    然后出现如下界面:

    9.png

    我们在版本管理里安装我们需要的Python版本。这里我以3.7.2为例,选择了国内的节点,国内节点安装会快一些。等一会就会安装成功。

    8、添加项目站点

    0200606011528.jpg

    域名处填写自己的域名即可,没有域名填写服务器IP地址。

    9、上传Django项目源码。

    留意:在打包项目源码之前,先在本地环境使用下面的命令把环境依赖包导出到requirements.txt文件里,并把这个文件存放在项目目录下,这一步奏非常重要,请务必记得操作。

    导出命令:

    pip freeze > requirements.txt

    这一步操作好之后,我们就通过下面的步骤把项目源码上传上到服务器上去。

    解压项目

    解压成功之后,就像下面那样。留意路径,记得源码一定要解压到根目录里。然后再检查一下,项目里有没有requirements.txt这个文件。

    10、添加uwsgi配置文件uwsgi.ini

    留意:新建一个空白文件,文件名为uwsgi.ini。新建成功之后输入如下代码,然后保存:

    #添加配置选择
    [uwsgi]
    #配置和nginx连接的socket连接
    socket=127.0.0.1:8997
    #配置项目路径,项目的所在目录
    chdir=/www/wwwroot/www.django.cn/
    #配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录
    wsgi-file=myblog/wsgi.py
    #配置启动的进程数
    processes=4
    #配置每个进程的线程数
    threads=2
    #配置启动管理主进程
    master=True
    #配置存放主进程的进程号文件
    pidfile=uwsgi.pid
    #配置dump日志记录
    daemonize=uwsgi.log`

    这里面,我们最需要留意的是项目路径和wsgi.py所在的目录。

    11、修改网站配置

    左侧网站,然后点击网站名,在弹出的窗口里找到’配置文件’,然后配置文件里输入如下代码:

        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997;  #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT myblog.wsgi;  #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /www/wwwroot/www.django.cn/; #项目路径
        }
          location /static/ {
          alias /www/wwwroot/www.django.cn/static/; #静态资源路径
          }

    里面的端口、路径都要和uwsgi.ini里的一致。

    20200606020353.jpg

    12、Python项目管理插件里添加项目

    在左右的软件商店里找到Python项目管理插件,然后点击设置,添加项目。里面的各种选项很简单,按实际情况填写就行。

    值得说的就是那个端口,端口要和uwsgi.ini里面的那个端口一致。如果有多个项目的话,不同的项目要填写不同的端口。端口随便填写,只要不与其它常用软件端口冲突就好。

    留意:

    使用Python项目管理插件新建项目成功之后,会自动在项目j源码目录里创建一个虚拟环境,虚拟环境目录一般都是以项目名_venv形式命名的。

    进入虚拟环境方法:

    在命令行输入  source 项目路径/项目名_venv/bin/activate 如:

    source /www/wwwroot/myblog/myblog_venv/bin/activate

    项目管理器默认使用pip安装项目根目录requirements.txt内的模块,这也是之前我强调把环境依赖包文件放到项目目录下的原因,如有其他模块需要安装请手动进入虚拟环境安装。

    以上配置完成之后,基本已经部署完毕。我们在浏览器里访问我们的域名,就能查看到网站。

    14、解决管理后台样式丢失

    如果后台样式丢失了,如图:

    41711.jpg

    解决办法:

    在宝塔面板里,点击网站路径进入项目路径下,找到settins.py文件,我们在末尾处添加静态资源收集路径

    #把APP静态资源收集到指定的目录下,这里我收集到static目录下
    STATIC_ROOT  = os.path.join(BASE_DIR, 'static')
    0200606144546.jpg

    之后在SSH终端进入项目虚拟环境:

    source /www/wwwroot/myblog/myblog_venv/bin/activate

    成功进入虚拟环境会出现如下标记:

    0200606143449.jpg

    出现项目名_venv这个标记,才说明已经成功进入虚拟环境。

    然后我们使用下面的命令收集静态文件:

    python manage.py collectstatic

    如下图:

    20200606144101.jpg

    收集成功之后,刷新后台页面,样式就恢复正常。

    至此教程结束。

    问题整理:

    1、访问显示出现 Internal Server Error 之类的错误的话,可能是程序不能正常运行的原因。请进入虚拟环境下,使用python manage.py runserver 命令运行项目,看项目能不能正常运行,不能正常运行就按错误提示进行解决就好。程序能正常运行使用项目管理器重启一下项目就能正常访问。

    2、如果出现:Django运行提示:SQLite 3.8.3 or later is required (found 3.7.17)  这样的错误,请按这篇文章操作。https://www.jiloc.com/47542.html

    3、如果在第十二步建立项目时提现出错,请把“是否安装模块依赖”这个选项去掉,等项目建立完成之后再进入虚拟环境手动安装依赖模块。

  • 关于django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3错误的处理办法

    关于django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3错误的处理办法

    最近,很多朋友都把自己的操作系统、Python、Django都升级到最新版本了,使用默认SQLite数据,运行时会报出类似django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3的错误提示。这主要是操作系统默认SQLite数据库版本太低造成的。这里给大家提供三种解决办法,希望能帮到大家。

    第一种:

    升级系统里的SQLite版本。方法:https://www.django.cn/forum/forum-487.html

    注意,如需要最新版本的话,请从官网下载最新的软件包。 下载址:https://www.sqlite.org/download.html

    第二种:找到报错文件,如/usr/local/python3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py 打开它,找到

    def check_sqlite_version():
        if Database.sqlite_version_info < (3, 9, 0):

    把里面小括号里的 SQLite版本(3,9,0)修改成你当前系统里版本就好。

    第三种:

    使用第三方包运行SQLite。把sqlite3 更换为pysqlite3 和 pysqlite3-binary方法:1、安装pysqlite3和pysqlite3-binary

    pip install pysqlite3
    pip install pysqlite3-binary
    

    2、打开文件/usr/local/python3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py,找到 from sqlite3 import dbapi2 as Database 注释它,添加代码

    #from sqlite3 import dbapi2 as Database  #注释它
    from pysqlite3 import dbapi2 as Database #新加这段代码

    三种,总有一种适合你。

  • php抓取网站关键词在百度具体排名 代码实例

    php抓取网站关键词在百度具体排名 代码实例

    php代码匹配某个网站及关键词在百度的搜索排名

    <?php
    function s($keyword,$url,$page = 1){
        static $px = 0;
        $rsState = false;
       
        $enKeyword = urlencode($keyword);
        $firstRow = ($page - 1) * 10;
       
        if($page > 10){
            die('10页之内没有该网站排名..end');
        }  
        $contents = file_get_contents("http://www.baidu.com/s?wd=$enKeyword&&pn=$firstRow");
        preg_match_all('/<table [^>]*?class="result"[^>]*>[\s\S]*?< \/table>/i',$contents,$rs);
        foreach($rs[0] as $k=>$v){
            $px++;
            if(strstr($v,$url)){
                $rsState = true;
                preg_match_all('/<h3 [\s\S]*?(<a[\s\S]*?<\/a>)/',$v,$rs_t);
                echo '当前 "' . $url . '" 在百度关键字 "' . $keyword . '" 中的排名为:' . $px;
                echo '<br />';
                echo '第' . $page . '页;第' . ++$k . "个<a target='_blank' href='http://www.baidu.com/s?wd=$enKeyword&&pn=$firstRow'>进入百度</a>";
                echo '<br />';
                echo $rs_t[1][0];
                break;
            }
        }
        unset($contents);
        if($rsState === false){
            s($keyword, $url,++$page);
        }
    }
    if(isset($_POST['submit'])){
       
        $time = explode(' ',microtime());
        $start = $time[0] + $time[1];
        $url = $_POST['url'];
        if( count(explode('.',$url)) < = 2){
            $url = ltrim($url,'http://');
            $url = 'www.' . $url;
        }
        s($_POST['keyword'],$url);
       
        $endtime = explode(' ',microtime());
        $end = $endtime[0] + $endtime[1];
        echo '<hr>';
        echo '程序运行时间: ';
        echo $end - $start;
        die();
    }
    ?>
    < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
    <title>抓取排名</title>
    </head>
    <body>
    <form action="" method="post">
        <ul>
            <li>
                <span>关键字:</span><input type="text" name="keyword"/>
            </li>
            <li>
                <span>url地址:</span><input type="text" name="url"/>
            </li>
            <li>
                <input type="submit" name="submit" value="搜索"/>
            </li>
        </ul>
       
    </form>
    </body>
    </html>
    </h3></table>
WeChat