开机任务栏提示"Windows无法连接到System Event Notification Service服务...."

在使用Win7旗舰版系统的时候,开机任务栏右下角会弹出一个错误提示:未能连接一个Windows服务,Windows无法连接到System Event Notification Service服务,此问题阻止标准用户登录系统。

出现这种情况一般是由于系统中的服务System Event Notification Service无法启动导致的,只要按Win+R键调出运行对话框,输入Services.msc并按回车键打开服务管理器,找到System Event Notification Service服务并将其开启即可。

但是,部分用户电脑会出现System Event Notification Service服务已经损坏,不能重新启动了,所有此服务的功能全部失效,则问题的原因应该是WinSock损坏。可通过下面的方法解决:

一:点击“开始”菜单,在搜索框中输入“cmd”,点击搜索结果中的“cmd.exe”(非管理员要,按右键选择“以管理员身份运行”)。

二:在调出的“命令提示符”窗口中输入双引号内红字内容“netsh winsock reset catalog”(如果提示WinSock目录已重置成功的话,直接重启电脑就行了)。

三:如果重启后不能解决,尝试开机按F8进入安全模式,重复上面的步骤。

很多用户用了上述方法会发现仍然解决不了问题,并会遇到错误提示“Nshhttp.cll中初始化函数inithelperdll启动失败,错误代码:10107。”,请直接重新启动电脑,按F8进入安全模式,然后在安全模式中打开360安全卫士,这时已经不会提示有问题了,然后点击高级工具-> LSP修复工具 -> 恢复WinSock LSP到初始状态。 然后在运行里输入命令:netsh winsock reset catalog 这次提示修复成功,需要重启系统,于是再次重启,搞定。

System Event Notification Service服务介绍:
“System Event Notification Service”,意思就是系统事件的通知服务,服务监视并跟踪计算机事件。如Windows登录网络和电源事件,它还将这些事件通知给COM+ 事件系统订阅者。在Windows XP 和Windows Server 2003上默认安装并自动运行此服务。

System Event Notification Server此服务是系统必要的服务。若被禁用后,开机后不管是网卡,还是无线网卡都要等上很久才能用,可以用LSP修复工具修复。
Winsock LSP可用于非常广泛的实用用途,包括Internet家长控制 (parental control) 和Web内容筛选。Winsock LSP是Windows底层网络Socker通信需要经过的大门。一些间谍软件可以把自已加进去,就可以截取、访问、修改网络的数据包,可以随意添加广告,还能获取你的浏览习惯,即“浏览器劫持”。间谍软件会修改Winsock的设置,进行LSP“浏览器劫持”,所有与网络交换的信息都要通过这些间谍软件,从而使得它们可以监控使用者的信息。

 

 

经测试,我目前使用的WIN7上无法解决问题..

WDOYO模板中头部模板head.html中TDK的写法

为方便模板制作,全站统一使用一个头部模板head.html ,而头部的TDK,不同页面不一样,所以需要在头部模板head.html中进行处理.

 

{if($product['id']!='')}
<title>{$product['title']}_{$GLOBALS['S']['title']}</title>
<meta name="keywords" content="{$product['keywords']}" />
<meta name="description" content="{$product['description']}" />
<meta property="og:type" content="product"/>
<meta property="og:image" content="{$GLOBALS['S']['http']}{$product['litpic']}"/>
<meta property="og:title" content="{$product['title']}"/>
<meta property="og:description" content="{$product['description']}"/>
<meta property="og:product:brand" content="HEIMAN"/>
{else}
{if($article['id']!='')}
<title>{$article['title']}_{$GLOBALS['S']['title']}</title>
<meta name="keywords" content="{$article['keywords']}" />
<meta name="description" content="{$article['description']}" />
{else}
{if($type['tid']!='')}
<title>{$type['classname']}_{$GLOBALS['S']['title']}</title>
<meta name="keywords" content="{$type['keywords']}" />
<meta name="description" content="{$type['description']}" />
{else}
{if($type['word']!='')}
<title>{$type['word']}_{$GLOBALS['S']['title']}</title>
<meta name="keywords" content="{$type['word']}" />
<meta name="description" content="{$type['word']}" />
{else}
<title>清晨博客-{$GLOBALS['S']['title']}</title>
<meta name="keywords" content="{$GLOBALS['S']['keywords']} " />
<meta name="description" content="{$GLOBALS['S']['description']} " />
{/if}
{/if}
{/if}
{/if}

 

其中搜索页是通过

{if($type['word']!='')}

进行判断的,同时还需要修改模块的源码

比如产品频道

打开sourceproduct.php

找到function search(){函数

修改这一行

$this->type=array('title'=>'Search','keywords'=>$GLOBALS['S']['keywords'],'description'=>$GLOBALS['S']['description'],'word'=>$this->syArgs('word',1),'classname'=>'所有搜索结果',);//添加搜索词word输出

 

 
通过判断ID来进行处理,达到目的.
 

 

飓风算法3.0即将上线,控制跨领域采集及站群问题

为了维护健康的移动生态,保障用户体验,保证优质站点/智能小程序能够获得合理的流量分发,百度搜索将在近期对飓风算法进行升级,上线飓风算法3.0。

本次算法升级主要针对跨领域采集以及站群问题,将覆盖百度搜索下的PC站点、H5站点、智能小程序等内容。对于算法覆盖的站点/智能小程序,将会根据违规问题的恶劣程度,酌情限制搜索结果的展现。

以下详细说明飓风算法3.0的相关规则。

 

一. 跨领域采集:

指站点/智能小程序为了获取更多流量,发布不属于站点/智能小程序领域范围的内容,通常这些内容采集自互联网,内容质量及相关性低、对搜索用户价值低。对于这样的行为搜索会判定该站点/智能小程序的领域专注度不足,会有不同程度的限制展现。

跨领域采集主要包括下面两类问题:

第一类:主站或主页的内容/标题/关键词/摘要等信息显示该站有明确的领域或行业,但发布内容与该领域不相关,或相关性较低。
问题示例:美食类智能小程序发布足球相关内容

第二类:站点/智能小程序没有明确的领域或行业,内容涉及多个领域或行业,领域模糊、领域专注度低。
问题示例:智能小程序内容涉及多个领域

二. 站群问题:

指批量构造多个站点/智能小程序,获取搜索流量的行为。站群中的站点/智能小程序大多质量低、资源稀缺性低、内容相似度高、甚至复用相同模板,难以满足搜索用户的需求。

问题示例:多个智能小程序复用同一模板,内容质量低、相似度高

 

以上就是飓风算法3.0的相关说明,算法预计在8月内陆续上线。请大家及时查收站内信、短信等渠道的提醒,积极自查完成整改,避免不必要的损失。

数据恢复过程中的温馨提示

 

  • 数据丢失后,不要往待恢复的盘上存入新文件。
  • 如果要恢复的数据是在C盘,而系统坏了,启动不了系统,那么不要尝试重装系统或者恢复系统,要把这块硬盘拆下来,挂到另外一个电脑作为从盘来恢复。
  • 文件丢失后,不要再打开这个盘查看任何文件,因为浏览器在预览图片的时候会自动往这个盘存入数据造成破坏。
  • 分区打开提示格式化的时候,不能格式化这个盘符,如果格式化肯定会破坏文件恢复的效果。
  • U盘变成RAW格式无法打开,不能格式化或者用量产工具初始化U盘,不然会破坏数据。
  • 文件删除后,可以把扫描到的文件恢复到另外一个盘符里面。
  • 只有一个盘格式化后,盘大小没有发生变化,比如原来是20G现在也是20G,那么数据可以恢复到另外一个盘里面;如果分区的大小发生改变,那么必须恢复到另外一个物理硬盘才安全。
  • 重新分区或者同一个硬盘里面多个分区全部格式化后,必须恢复到另外一个物理硬盘里面,不能恢复到同一个硬盘里面别的分区。
  • 要等数据全部恢复到另外一个盘或者硬盘后,要打开文件仔细检查,确定都恢复对了,才能往源盘里面拷回去的,不能恢复一部分就拷回一部分,往源盘拷数据会影响下一次的数据恢复。
  • 如果没有另外一块足够大的盘来存数据,而且有局域网联网的条件,那么可以在别的电脑上开通具有可写权限的共享目录,恢复到网络邻居共享目录里面。

PHP版内容自动创建索引目录的代码

来源于网络

PHP版内容自动创建索引目录的代码,可以自动把内容中的<h2><h3>标签中的内容作为索引目录,创建内容页中的小导航菜单.

关于css的代码,可以自行处理.

 

function create_con_menu($content) {
    $matches = array();
    $ul_li = '';
    //匹配出h2、h3标题
    $rh = "/<h[23]>(.*?)</h[23]>/im";
    $h2_num = 0;
    $h3_num = 0;
    //判断是否是文章页
    if(is_single()){
         if(preg_match_all($rh, $content, $matches)) {
            // 找到匹配的结果
            foreach($matches[1] as $num => $title) {
                $hx = substr($matches[0][$num], 0, 3);      //前缀,判断是h2还是h3
                $start = stripos($content, $matches[0][$num]);  //匹配每个标题字符串的起始位置
                $end = strlen($matches[0][$num]);       //匹配每个标题字符串的结束位置
                if($hx == "<h2"){
                    $h2_num += 1; //记录h2的序列,此效果请查看百度百科中的序号,如1.1、1.2中的第一位数
                    $h3_num = 0;
                    // 文章标题添加id,便于目录导航的点击定位
                    $content = substr_replace($content, '<h2 id="h2-'.$num.'">'.$title.'</h2>',$start,$end);
                    $title = preg_replace('/<.+?>/', "", $title); //将h2里面的a链接或者其他标签去除,留下文字
                    $ul_li .= '<li class="h2_nav"><a href="#h2-'.$num.'" class="tooltip" title="'.$title.'">'.$title."</a><i class="post_nav_dot"></i></li>n";
                }else if($hx == "<h3"){
                    $h3_num += 1; //记录h3的序列,此熬过请查看百度百科中的序号,如1.1、1.2中的第二位数
                    $content = substr_replace($content, '<h3 id="h3-'.$num.'">'.$title.'</h3>',$start,$end);
                    $title = preg_replace('/<.+?>/', "", $title); //将h3里面的a链接或者其他标签去除,留下文字
                    $ul_li .= '<li class="h3_nav"><a href="#h3-'.$num.'" class="tooltip" title="'.$title.'">'.$title."</a><i class="post_nav_dot"></i></li>n";
                }  
            }
        }
        // 将目录拼接到文章
        $content =    "<div class="post_nav"><ul class="post_nav_content">n" . $ul_li . "</ul></div>n".$content;
        return $content;
    }
}

 

 

 

 

 

(PHP)JTBC1.0图片集功能增强教程

教程下载地址:

https://wdjacms.pipipan.com/fs/16922972-385595717

(PHP)JTBC1.0图片集默认是用竖线 | 隔开的图片地址字符串

为了增强其功能,可以为每张图片添加标题和介绍,我们再对每条图片地址进行扩展.

增加标题和介绍文字

原格式

 1.jpg|2.jpg|3.png|4.gif

新格式

 1#:#1介绍方案#:#1.jpg|2#:#2介绍方案#:#2.jpg|3#:#3介绍方案#:#3.png|4#:#4介绍方案#:#4.gif

为此,需要修改图片集上传图片的方式,修改预览图片集的方式,修改插入到内容中的方式

下面我们逐一进行操作:

1.添加语言

位置: /common/language/lng_config.jtbc

    <item>
      <disinfo><![CDATA[img_title]]></disinfo>
      <chinese><![CDATA[图片标题]]></chinese>
    </item>
    <item>
      <disinfo><![CDATA[img_desc]]></disinfo>
      <chinese><![CDATA[图片介绍]]></chinese>
    </item>
    <item>
      <disinfo><![CDATA[img_url]]></disinfo>
      <chinese><![CDATA[图片链接]]></chinese>
    </item>

说明:

这里的三个语言节点是作为后台添加和编辑模板中调用的.

2.添加函数

位置: /common/incfiles/common.inc.php

复制一份function mm_get_images_list($strers)函数

修改成如下

function mm_get_img_list($strers)
{
  if (!(ii_isnull($strers)))
  {
    $option_unselected = ii_itake('global.tpl_config.option_unselect', 'tpl');
    $tary = explode('|', $strers);
    $tmpstr = '';
    foreach ($tary as $key => $val)
    {
        $sary = explode('#:#', $val);
        $tstr = $option_unselected;
        $tstr = str_replace('{$explain}', $sary[0], $tstr);
        $tstr = str_replace('{$value}', $sary[0].'#:#'.$sary[1].'#:#'.$sary[2], $tstr);
        $tmpstr .= $tstr;
    }
    return $tmpstr;
  }
}

说明:

这里的mm_get_img_list函数是用来格式化图片集字段的.

如果前台输出的话,也可以参考此函数进行处理.

3.添加js

3.1 位置: /common/images/js/preview_images.js

最下面添加代码

function preview_img(strurl, e)
{
  var curPosX, curPosY
var img_arr = strurl.split("#:#");
var img_arr_len = img_arr.length - 1;
var img_url = img_arr[img_arr_len];
var img_desc = img_arr[1];
  if(window.event){
    curPosX = document.body.scrollLeft + event.x;
    curPosY = document.body.scrollTop + event.y;
  } else{
    curPosX = e.pageX;
    curPosY = e.pageY;
  }
  if (curPosX + 340 > document.body.clientWidth) {curPosX = curPosX - 340;}
  if (curPosY + 220 > document.body.clientHeight + document.body.scrollTop) {curPosY = curPosY - 220;}
  with(get_id("preview_images"))
  {
    style.display = "block";
    style.left = curPosX + "px";
    style.top = curPosY + "px";
  }
  get_id("preview_images_bottom").innerHTML = "<img src="" + img_url + "" border="0" onload="if (this.width > 300)this.width = 300;if (this.height > 180)this.height = 180;" alt="" + img_url + "">";
}

说明:

这里的js是用来进行预览图片集中的图片的,因为更改了图片集的存储格式,需要使用新方法进行预览.

3.2 位置: /common/images/js/manage.js

最下面添加以下代码

function img_info(){
var img_title = get_id("img_title").value ;
var img_desc = get_id("img_desc").value ;
var img_url = get_id("img_url").value ;
var opname = img_title ;
var opvalue = img_title+"#:#"+img_desc+"#:#"+img_url ;
if (img_title == "" || img_title.length == 0){
alert('标题不可为空');
}
else if (img_url == "" || img_url.length == 0){
alert('图片不可为空');
}
else{
selects.add(get_id("content_images"), opname, opvalue);
get_id("img_title").value = '';
get_id("img_desc").value = '';
get_id("img_url").value = '';
alert('增加成功');
}
}
function insert_img(strid, strurl, strntype, strtype, strbase)
{
  var tstrtype;
var img_arr = strurl.split("#:#");
var img_arr_len = img_arr.length - 1;
var img_url = img_arr[img_arr_len];
var img_desc = img_arr[1];
//alert(img_arr);
  if (strtype == -1)
  {tstrtype = strntype;}
  else
  {
    var thtype = request["htype"];
    if (thtype == undefined)
    {tstrtype = strtype;}
    else
    {tstrtype = get_num(thtype);}
  }
  switch (tstrtype)
  {
    case 0:
      editor_insert(strid, "<img src="" + img_url + "" alt="" + img_desc + "" border="0">");
      //editor_insert(strid, "<img src="" + strbase + "/" + img_url + "" border="0">");
      break;
    case 1:
      itextner(strid, "[img]" + img_url + "[/img]");
      break;
    case 3:
      itextner(strid,  "<img src="" + img_url + "" border="0">");
      break;
  }
}

说明:

img_info()是插入图片集表单内容到图片集的js函数.

insert_img是插入选择的图片集图片到内容编辑框中.

4.模块中的修改

位置: /模块/common/template/manage.jtbc

4.1节点add修改如下:

修改图片集表单代码


                    <tr>
                      <td height="25">{$=ii_itake('global.lng_config.images','lng')}</td>
                      <td><input type="hidden" name="content_images_list" id="content_images_list"><select name="content_images" id="content_images" class="select" onkeydown="selects.displace(this, this.selectedIndex, event.keyCode)"></select> <input type="button" class="button" value="{$=ii_itake('global.lng_config.preview','lng')}" onclick="preview_img(get_id('content_images').value, event)"> <input type="button" class="button" value="{$=ii_itake('global.lng_config.delete','lng')}" onclick="selects.remove(get_id('content_images'))"> <input type="button" class="button" value="{$=ii_itake('global.lng_config.insert','lng')}" onclick="insert_img('content', get_id('content_images').value, {$=#ncttype}, 0, '{$=ii_get_lrstr($GLOBALS['nuri'], "/", "leftr")}')"></td>
                    </tr>

说明:

这里的preview_img和insert_img是更改后的js方法.用来重新处理图片集的新格式,实现原预览和插入功能.

替换图片集上传代码为:


                    <tr>
                      <td height="25">{$=ii_itake('global.lng_config.img_title','lng')}</td>
                      <td><input type="text" id="img_title" name="img_title" size="40" value=""></td>
                    </tr>
                    <tr>
                      <td height="25">{$=ii_itake('global.lng_config.img_desc','lng')}</td>
                      <td><input type="text" id="img_desc" name="img_desc" size="40" value=""></td>
                    </tr>
                    <tr>
                      <td height="25">{$=ii_itake('global.lng_config.img_url','lng')}</td>
                      <td><input type="text" id="img_url" name="img_url" size="30" value="" ondblclick="preview_images(this.value, event)">&nbsp;<iframe src="?type=upload&upform=form&uptext=img_url&upsimg={$upsimg}" style="vertical-align: middle;" width="250" height="25" scrolling="no" marginwidth="0" marginheight="0" align="middle" name="upload" frameborder="0"></iframe></td>
                    </tr>
                    <tr>
                      <td height="25"></td>
                      <td><a onclick="img_info()" class="button">增加</a></td>
                    </tr>

说明:

这里的三个表单是新图片集格式的三个参数,用来组成新的图片集.

4.2节点edit修改如下:

修改图片集表单代码


                    <tr>
                      <td height="25">{$=ii_itake('global.lng_config.images','lng')}</td>
                      <td><input type="hidden" name="content_images_list" id="content_images_list"><select name="content_images" id="content_images" class="select" onkeydown="selects.displace(this, this.selectedIndex, event.keyCode)">{$=mm_get_img_list('{$content_images_list}')}</select> <input type="button" class="button" value="{$=ii_itake('global.lng_config.preview','lng')}" onclick="preview_img(get_id('content_images').value, event)"> <input type="button" class="button" value="{$=ii_itake('global.lng_config.delete','lng')}" onclick="selects.remove(get_id('content_images'))"> <input type="button" class="button" value="{$=ii_itake('global.lng_config.insert','lng')}" onclick="insert_img('content', get_id('content_images').value, {$=#ncttype}, 0, '{$=ii_get_lrstr($GLOBALS['nuri'], "/", "leftr")}')"></td>
                    </tr>

说明:

这里的preview_img和insert_img是更改后的js方法.用来重新处理图片集的新格式,实现原预览和插入功能.

其中mm_get_img_list函数是通过php来处理新的图片集格式进行输出.

替换图片集上传代码为:


                    <tr>
                      <td height="25">{$=ii_itake('global.lng_config.img_title','lng')}</td>
                      <td><input type="text" id="img_title" name="img_title" size="40" value=""></td>
                    </tr>
                    <tr>
                      <td height="25">{$=ii_itake('global.lng_config.img_desc','lng')}</td>
                      <td><input type="text" id="img_desc" name="img_desc" size="40" value=""></td>
                    </tr>
                    <tr>
                      <td height="25">{$=ii_itake('global.lng_config.img_url','lng')}</td>
                      <td><input type="text" id="img_url" name="img_url" size="30" value="" ondblclick="preview_images(this.value, event)">&nbsp;<iframe src="?type=upload&upform=form&uptext=img_url&upsimg={$upsimg}" style="vertical-align: middle;" width="250" height="25" scrolling="no" marginwidth="0" marginheight="0" align="middle" name="upload" frameborder="0"></iframe></td>
                    </tr>
                    <tr>
                      <td height="25"></td>
                      <td><a onclick="img_info()" class="button">增加</a></td>
                    </tr>

说明:

这里的三个表单是新图片集格式的三个参数,用来组成新的图片集.

5.注意点

以上教程只作为新站或新模块使用

如已有数据,不建议使用.

前台调用的方法,其实通过一个函数来进行输出比较好.可以自行修改.

 

javascript的Document 对象方法

 

getElementById() 返回对拥有指定 id 的第一个对象的引用。
getElementsByName() 返回带有指定名称的对象集合。
getElementsByTagName() 返回带有指定标签名的对象集合。

getElementsByClassName()通过类名查找 HTML 元素

querySelectorAll()通过 CSS 选择器查找 HTML 元素

getElementsByClassName()不适用于 Internet Explorer 8 及其更早版本。

querySelectorAll() 不适用于 Internet Explorer 8 及其更早版本。

例子

<div id="main">

<p id="intro" class="intro">Hello World!</p>

</div>

 

var x = document.getElementById("intro");

 

var x = document.getElementsByTagName("p");

 

var x = document.getElementById("main");
var y = x.getElementsByTagName("p");

 

var x = document.getElementsByClassName("intro");

 

var x = document.querySelectorAll("p.intro");

 

请注意,只有getElementById()中Element是单数,获取的是一个对象.其余的都是获取对象集合

jQuery版页面滚动元素动画插件aos.js

aos.js是一款效果超赞的页面滚动元素动画jQuery动画库插件。该动画库可以在页面滚动时提供28种不同的元素动画效果,以及多种easing效果。在页面往回滚动时,元素会恢复到原来的状态。

开源地址:https://github.com/michalsnik/aos

安装
可以通过bower来安装aos动画库插件。
bower install aos --save
使用方法
在页面中引入aos.css文件,jquery和aos.js文件
<link rel="stylesheet" href="dist/aos.css" />
<script src="js/jquery.min.js"></script>
<script src="dist/aos.js"></script>
HTML结构
要使用aos动画库,你需要做的就是在需要动画的元素上添加aos属性,例如:
<div aos="animation_name">
aos脚本将会在页面滚动时,在该元素上触发相应的动画。

在元素上还可以添加以下一些属性:

属性 属性 属性 默认值
aos-offset 是立刻触发动画还是在指定时间之后触发动画 200 120
aos-duration 动画持续时间 600 400
aos-easing 动画的easing动画效果 ease-in-sine ease
aos-delay 动画的延迟时间 300 0
aos-anchor 锚元素。使用它的偏移来取代实际元素的偏移来触发动画 #selector null
aos-anchor-placement 锚位置,触发动画时元素位于屏幕的位置 top-center top-bottom
aos-once 动画是否只会触发一次,或者每次上下滚动都会触发 true false

注意,aos-duration的动画持续时间的范围从50-3000毫秒,如果你想设置更大的值,可以在页面中添加下面的CSS代码:
body[aos-duration='4000'] [aos], [aos][aos][aos-duration='4000']{
transition-duration: 4000ms;
}
上面的代码将动画的持续时间修改为4000毫秒。

示例代码:
<div aos="fade-zoom-in" aos-offset="200" aos-easing="ease-in-sine" aos-duration="600">
<div aos="flip-left" aos-delay="100" aos-anchor=".example-selector">
<div aos="fade-up" aos-anchor-placement="top-center">
如果你担心HTML5校验的问题,可以为上面的属性添加data-前缀。
<div data-aos="animation_name" data-aos-offset="200" data-aos-easing="ease-in-sine">
全局配置
如果你不想单独每个元素做一个动画配置,你可以通过init()方法来统一配置所有元素的动画效果。
AOS.init({
offset: 200,
duration: 600,
easing: 'ease-in-sine',
delay: 100,
});
额外配置
AOS提供了2个额外的配置方法,这些方法只能够在初始化时使用。

配置 描述 示例值 默认值
disable AOS被禁用的条件 mobile false
startEvent AOS被初始化的事件名称 exampleEvent DOMContentLoaded

禁用AOS:

如果你项在小屏幕设备中禁用AOS,可以:
AOS.init({
disable: 'mobile'
});
你可以传入3种设备的类型:mobile、phone或tablet。

你也可以设置自己的禁用条件,例如在屏幕小于1024像素时禁用AOS:
disable: window.innerWidth < 1024
或者传入一个函数,返回true或false。
disable: function () {
var maxWidth = 1024;
return window.innerWidth < maxWidth;
}
开始动画的事件:
如果你不想滚动动画从页面加载(DOMContentLoaded)后就开始执行,可以使用startEvent来设置自己的事件,AOS会在document上监听这个事件:
AOS.init({
startEvent: 'someCoolEvent'
});
API
AOS对象有2个可用的方法:

init

refresh
AOS.refresh();
上面的代码会重新计算元素的位置和偏移。

动画和锚位置
动画

淡入淡出动画:

fade-up

fade-down

fade-left

fade-right

fade-up-right

fade-up-left

fade-down-right

fade-down-left

翻转动画:

flip-up

flip-down

flip-left

flip-right

滑动动画:

slide-up

slide-down

slide-left

slide-right

缩放动画:

zoom-in

zoom-in-up

zoom-in-down

zoom-in-left

zoom-in-right

zoom-out

zoom-out-up

zoom-out-down

zoom-out-left

zoom-out-right

锚位置

top-bottom

top-center

top-top

center-bottom

center-center

center-top

bottom-bottom

bottom-center

bottom-top

easing动画

你可以使用以下的一些easing动画效果:

linear

ease

ease-in

ease-out

ease-in-out

ease-in-back

ease-out-back

ease-in-out-back

ease-in-sine

ease-out-sine

ease-in-out-sine

ease-in-quad

ease-out-quad

ease-in-out-quad

ease-in-cubic

ease-out-cubic

ease-in-out-cubic

ease-in-quart

ease-out-quart

ease-in-out-quart

php 判断字符串是英文还是汉字还是英汉混合

php 判断字符串是英文还是汉字还是英汉混合

 

 

/*
		 * 判断给定字符串是
		 * 纯英文:ENGLISH
		 * 纯汉字:CHINESE
		 * 英汉混合:MIXTURE
		 */
		private function EnglishOrChinese($str){
		    $mb = mb_strlen($str,'utf-8');
		    $st = strlen($str);
		    if($st==$mb)
		        return ENGLISH;		//'纯英文';
		    if($st%$mb==0 && $st%3==0){
		        return CHINESE;		//'纯汉字';
		    }
		    else{
		    	return MIXTURE;		//'汉英混合';
		    }
		}

 

需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保

“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

 

 

参考

https://blog.csdn.net/carrousel0516/article/details/90229209

https://www.cnblogs.com/ryanzheng/p/8285113.html