htmlspecialchars 和 htmlentities 的区别分析

 更新时间:2016年11月25日 15:08  点击:2043

htmlspecialchars 和 htmlentities 的区别分析

htmlentities() 函数把字符转换为 HTML 实体。

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。

预定义的字符是:

& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 &lt;
> (大于) 成为 &gt;

The translations performed are:

'&' (ampersand) becomes '&amp;'
'"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
''' (single quote) becomes '&#039;' only when ENT_QUOTES is set.
'<' (less than) becomes '&lt;'
'>' (greater than) becomes '&gt;'
htmlspecialchars 只转化上面这几个html代码,而 htmlentities 却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。

例子
<html>
<body>
<?php教程
$str = "John & 'Adams'";
echo htmlentities($str, ENT_COMPAT);
echo "<br />";
echo htmlentities($str, ENT_QUOTES);
echo "<br />";
echo htmlentities($str, ENT_NOQUOTES);
?>
</body>
</html>浏览器输出:

John & 'Adams'
John & 'Adams'
John & 'Adams'如果在浏览器中查看源代码,会看到这些 HTML:

<html>
<body>
John &amp; 'Adams'<br />
John &amp; &#039;Adams&#039;<br />
John &amp; 'Adams'
</body>
</html>

我们可以拿一个简单的例子来做比较:

$str='<a href="test.html">测试页面</a>';
echo htmlentities($str);
// &lt;a href=&quot;test.html&quot;&gt;&sup2;&acirc;&Ecirc;&Ocirc;&Ograve;&sup3;&Atilde;&aelig;&lt;/a&gt;
 
$str='<a href="test.html">测试页面</a>';
echo htmlspecialchars($str);
// &lt;a href=&quot;test.html&quot;&gt;测试页面&lt;/a&gt;
结论是,有中文的时候,最好用 htmlspecialchars ,否则可能乱码

<html>
<body>
<?php
$str = "John & 'Adams'";
echo htmlspecialchars($str, ENT_COMPAT);
echo "<br />";
echo htmlspecialchars($str, ENT_QUOTES);
echo "<br />";
echo htmlspecialchars($str, ENT_NOQUOTES);
?>
</body>
</html>浏览器输出:

John www.111cn.net & 'Adams'
John & 'Adams'
John & 'Adams'如果在浏览器中查看源代码,会看到这些 HTML:

<html>
<body>
John www.111cn.net &amp; 'Adams'<br />
John &amp; &#039;Adams&#039;<br />
John &amp; 'Adams'
</body>
</html>

另外参考一下这个自定义函数

function my_excerpt( $html, $len ) {
    // $html 应包含一个 HTML 文档。
    // 本例将去掉 HTML 标记,网页特效 代码
    // 和空白字符。还会将一些通用的
    // HTML 实体转换成相应的文本。
    $search = array ("'<script[^>]*?>.*?</script>'si",  // 去掉 javascript
                    "'<[/!]*?[^<>]*?>'si",           // 去掉 HTML 标记
                    "'([rn])[s]+'",                 // 去掉空白字符
                    "'&(quot|#34);'i",                 // 替换 HTML 实体
                    "'&(amp|#38);'i",
                    "'&(lt|#60);'i",
                    "'&(gt|#62);'i",
                    "'&(nbsp|#160);'i",
                    "'&(iexcl|#161);'i",
                    "'&(cent|#162);'i",
                    "'&(pound|#163);'i",
                    "'&(copy|#169);'i",
                    "'&#(d+);'e");                    // 作为 PHP 代码运行
    $replace = array ("",
                     "",
                     "1",
                     """,
                     "&",
                     "<",
                     ">",
                     " ",
                     chr(161),
                     chr(162),
                     chr(163),
                     chr(169),
                     "chr(1)");
    $text = preg_replace ($search, $replace, $html);
    $text = trim($text);
    return mb_strlen($text) >= $len ? mb_substr($text, 0, $len) : '';
}

删除textarea回车与换行代码

function removeNL(s)
{
     // NewLine, CarriageReturn and Tab characters from a String
     // will be removed and will return the new string

     r = "";
     for (i = 0; i < s.length; i++)
     {
         if (s.charAt(i) != 'n' & s.charAt(i) != 'r' & s.charAt(i) != 't') {
             r += s.charAt(i);
         }
     }

     return r;
}

php教程处理方法


用php函数,str_replace替换函数,比如str_replace(‘n','<br />') ,问题是替换并没有成功,一直都没有替换掉,我弄了好久甚至开始怀疑textarea中的换行符是不是n,现在想想真是太动摇了,其实我经过测 分别替换 n /n 后直觉告诉我自己走进了死胡同,这不是解决问题的方式,肯定有哪里存在根本性错误。突然我想到了会不会是单引号或者双引号的问题呢,于是将str_replace(‘n','<br />') 改成str_replace(“n”,”<br />”),灵光闪现了,替换成功


序列
含义

n
换行(lf 或 ascii 字符 0×0a(10))

r
回车(cr 或 ascii 字符 0×0d(13))

t
水平制表符(ht 或 ascii 字符 0×09(9))


反斜线

$
美元符号


双引号

[0-7]{1,3}
此正则表达式序列匹配一个用八进制符号表示的字符

x[0-9a-fa-f]{1,2}
此正则表达式序列匹配一个用十六进制符号表示的字符


更多详细内容请查看:http://www.111cn.net/phper/php-cy/35424.htm

php教程 数组的处理详解
 
1.1 数组的创建和初始化:
1.arrary()函数创建数组,默认情况下0元素是数组的第一个元素,
count()和sizeof()函数获得数据元素的个数
2.使用变量建立数组
compact()在当前的符号表中查找该变量名并将它添加到输出的数组中,变量名成为键名而变量的内容成为该键的值.
复制代码 代码如下:
<?php
$num=10;
$str="string";
$array=array(1,2,3);
$newarray=compact("num","str","array");
print_r($newarray);
/*结果
array([num]=10 [str]=>string [array]=>array([0]=>1 [1]=>2 [2]=>3))
*/
?>

extract() 将数组中的单元转为变量
复制代码 代码如下:
<?php
$array=array("key1"=>1,"key2"=2,"key3"=3);
extract($array);
echo "$key1 $key2 $key3";//输出1 2 3
?>

3.使用两个数组创建一个数组
复制代码 代码如下:
array_combine(array $keys, array $values)
<?php
$a=array('green','red','yellow');
$b=array(' volcado','apple','banana');
$c=array_combine($a,$b);
print_r($c);
?>

4.建立指定范围数组
range()
5.自动建立数组
1.2 键名和值的操作
本小节只讲常用的
。检查数组是否存在某个键名和值可以使用。array_key_exists()和in_arrary函数,isset()检查数组中的键名,当键名为NULL时,isset()返回           false,而array_key_exists()返回true.
。array_search()函数用于检查数组的键值是否存在,不存在返回NULL。
。key()函数可以取得数组当前单元的键名.
。list()函数,将数组中值赋给指定的变量。在数组遍历中非常有用。
<?php
$arr=array("红色","蓝色","白色");
list($red,$blue,$white)=$arr;
echo $red; //红色
echo $blue; //蓝色
echo $white; // 白色
。array_fill()和array_fill_keys()可以用给定的值班填充数组的值和键名
。array_filp()可以交换数组中的键名和值,另外如果交换数组中有相同的值,则相同的值转换为键名后,值保留最后一个
。array_keys()和array_values()函数可以取得数组中的键名和值,并保存到一个新的数组中。
。array_splice(arry $input,int $offset[,int $length[,array $replacement]])将数组中的一个或多个单元删除并用其它值代替。
。array_unique(),可以移除数组中的重复的值,返回一个新数组,并不会破坏原有的数组。
1.3 数组的遍历与输出
1.使用while 循环访问数组
应用while、list()、each()函数对数组遍历
2. for循环访问数组
3.使用foreach循环访问数组
复制代码 代码如下:
<?php
$color=array("a"=>"red","blue","white");
foreach($color as $value)
{
echo $value."<br>";//输出数组的值
}
foreach($color as $key=>$value)
{
echo $key."=>".$value."<br>";//输出数组的键名和值
}
?>

1.正则表达式基础知识
含义:由普通字符和(a-z)和一些特殊字符组成的字符串模式
功能:有效性验证。
替换文本。
从一个字符串提取一个子字符串。
分类:POSIX和Perl
POSIX风格更容易掌握,但不能用于二进制模式,而perl相对比较复杂。
2.POSIX风格的正则表达式
1.编写正则表达式
表4.3 POSIX正则表达式语法格式列表
字 符
 描 述
 

 转义字符,用于转义特殊字符。例如,'.'匹配单个字符,'.'匹配一个点号。'-'匹配连字符'-',''匹配符号''
 
^
 匹配输入字符串的开始位置。例如'^he'表示以'he'开头的字符串
 
$
 匹配输入字符串的结束位置。例如,'ok$'表示以'ok'结尾的字符串
 
*
 匹配前面的子表达式零次或多次。例如,'zo*'能匹配"z"以及"zoo"。*等价于{0,}
 
+
 匹配前面的子表达式一次或多次。例如,'zo+'能匹配"zo"以及"zoo",但不能匹配"z"。+等价于{1,}
 
?
 匹配前面的子表达式零次或一次。例如,'do(es)?'可以匹配"do"或"does"中的"do"。'?'等价于{0,1}
 
{n}
 n是一个非负整数。匹配确定的n次。例如,'o{2}'不能匹配"Bob"中的'o',但是能匹配"food" 中的两个'o'
 
{n,}
 n是一个非负整数。至少匹配n次。例如,'o{2,}'不能匹配"Bob"中的'o',但能匹配"foooood" 中的所有'o'。'o{1,}'等价于'o+'。'o{0,}'则等价于'o*'
 
{n,m}
 m和n均为非负整数,其中n≤m。最少匹配n次且最多匹配m次。例如,"o{1,3}"将匹配"fooooood"中的前三个'o'。'o{0,1}'等价于'o?'。请注意在逗号和两个数之间不能有空格
 
?
 当该字符紧跟在任何一个其他限制符(*, +, ?, {n}, {n,}, {n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串。例如,对于字符串"oooo",'o+?'将匹配单个"o",而'o+' 将匹配所有'o'
 
.
 匹配除"n"之外的任何单个字符,要匹配包括'n' 在内的任何字符,可以使用'[.n]'的模式
 
(pattern)
 匹配pattern并获取这一匹配。所获取的匹配保存到相应的数组中。要匹配圆括号字符,请使用 '(' 或 ')'
 
(?:pattern)
 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储。这在使用"或"|"来组合一个模式的各个部分时很有用。例如,'industr(?:y|ies).就是一个比'industry|industries'更简略的表达式
 
(?=pattern)
 正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows(?=95|98|NT|2000)'能匹配"Windows 2000"中的"Windows",但不能匹配"Windows 3.1"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
 
(?!pattern)
 负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows(?!95|98|NT|2000)'能匹配"'Windows 3.1"中的"Windows",但不能匹配"Windows 2000"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
 
x|y
 匹配x或y。例如,'z|food' 能匹配"z"或"food",'(z|f)ood'则匹配"zood"或"food"
 
[xyz]
 字符集合。匹配所包含的任意一个字符。例如,'[abc]'可以匹配"plain"中的'a'
 
[^xyz]
 负值字符集合。匹配未包含的任意字符。例如,'[^abc]'可以匹配"plain"中的'p'
 
[a-z]
 字符范围。匹配指定范围内的任意字符。例如,'[a-z]'可以匹配'a'到'z' 范围内的任意小写字母字符
 
[^a-z]
 负值字符范围。匹配不在指定范围内的任意字符。例如,'[^a-z]'可以匹配不在'a' 到'z'范围内的任意字符
 
以下是几个简单的正则表达式的例子:
●'[A-Za-z0-9] ':表示所有的大写字母、小写字母及0到9的数字。
●'^hello':表示以hello开始的字符串。
●'world$':表示以world结尾的字符串。
●'.at':表示以除"n"外的任意单个字符开头并以"at"结尾的字符串,如"cat"、"nat"等。
●'^[a-zA-Z]':表示一个以字母开头的字符串。
●'hi{2}':表示字母h后跟着两个i即hii。
●'(go)+':表示至少含有一个'go'字符串的字符串,如'gogo'
身份证号码一般由18位数字或17位数字后面加一个X或Y字母组成,要匹配身份证号码,可以写作:
^[0-9]{17}([0-9]|X|Y)$
Email地址的正则表达式可以写作:
^[a-zA-Z0-9-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$
2.字符串的匹配
ereg()和eregi()函数
使用ereg()函数可以查找字符串与子字符串匹配的情况,并返回匹配字符串的长度,还可以借助参数返回匹配字符的数组。语法格式如下:
int ereg(string ($pattern) , string $string [, array $regs ])
复制代码 代码如下:

<?php教程
/*本例检查字符串是否是ISO格式的日期(YYYY-MM-DD) */
$date="1988-08-09";
$len=ereg ('([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})', $date, $regs);//日期格式为YYYY-MM-DD
if ($len)
{
echo "$regs[3].$regs[2].$regs[1]". "<br>"; //输出"09.08.1988"
echo $regs[0] ."<br>"; //输出"1988-08-09"
echo $len; //输出10
}
else
{
echo "错误的日期格式: $date";
}
?>

1.UNIX时间戳
php教程d 处理数据,特别是对数据库教程中时间类型数据进行格式化时,需先将时间类型的数据转化为UNIX时间戳进行处理。不同的数据库系统对时间类型的数据
不能兼容 转换,这时就需要将时间转化为UNIX时间戳。这样京实现了不同数据库系统的跨平台性。
2.时间转化为时间戳
如果要将用字符串表达的日期和时间转化为时间戳的形式,可以使用strtotime()函数。
语法格式如下:
int strtotime(string $time [, int $now ])
例如:
复制代码 代码如下:
<?php
echo strtotime('2009-03-05'); //输出1236211200
echo strtotime('2009-03-05 10:24:30'); //输出1236248670
echo strtotime("10 September 2000"); //输出968544000
?>

另一个取得日期的UNIX时间戳的函数是mktime()函数,
语法格式如下:
int mktime([int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year]]]]]])
3.获取日期和时间
1.data()函数
是将时间戳照给定的格式转化为具体的日期和时间字符串。
语法格式如下:
string date(string $format [, int $timestamp ])
说明:
$format指定了转化后的日期和时间的格式,
$timestamp是需要转化的时间戳,如果省略则使用本地当前时间,即默认值为time()函数的值。
time()函数返回当前时间的时间戳
date函数的$format参数的取值如下表。
表4.6 date()函数支持的格式代码
字 符
 说 明
 返回值例子
 
d
 月份中的第几天,有前导零的2位数字
 01~31
 
D
 星期中的第几天,用3个字母表示
 Mon到Sun
 
j
 月份中的第几天,没有前导零
 1~31
 
l
 星期几,完整的文本格式
 Sunday~Saturday
 
N
 ISO-8601格式数字表示的星期中的第几天
 1(星期一)~7(星期天)
 
S
 每月天数后面的英文后缀,用2个字符表示
 st、nd、rd或th,可以和j一起用
 
w
 星期中的第几天,数字表示
 0(星期天)~6(星期六)
 
z
 年份中的第几天
 0~366
 
W
 ISO-8601格式年份中的第几周,每周从星期一开始
 例如:42(当年的第42周)
 
F
 月份,完整的文本格式,如January或March
 January~December
 
m
 数字表示的月份,有前导零
 01~12
 
M
 三个字母缩写表示的月份
 Jan~Dec
 
n
 数字表示的月份,没有前导零
 1~12
 
t
 给定月份所应有的天数
 28~31
 
L
 是否为闰年
 如果是闰年为1,否则为0
 
o
 ISO-8601格式年份数字。这和Y的值相同,只是如果ISO的星期数(W)属于前一年或下一年,则用那一年
 例如:1999或2003
 
Y
 4位数字完整表示的年份
 例如:1999或2003
 
y
 2位数字表示的年份
 例如:99或03
 
a
 小写的上午和下午值
 am或pm
 
A
 大写的上午和下午值
 AM或PM
 
B
 Swatch Internet标准时
 000~999
 
g
 小时,12小时格式,没有前导零
 1~12
 
G
 小时,24小时格式,没有前导零
 0~23
 
h
 小时,12小时格式,有前导零
 01~12
 
H
 小时,24小时格式,有前导零
 00~23
 
i
 有前导零的分钟数
 00~59
 
s
 秒数,有前导零
 00~59
 
e
 时区标志
 例如:UTC,GMT,Atlantic/Azores
 
I
 是否为夏令时
 如果是夏令时为 1,否则为0
 
O
 与格林尼治时间相差的小时数
 例如:+0200
 
P
 与格林尼治时间(GMT)的差别,小时和分钟之间用冒号分隔
 例如:+02:00
 
T
 本机所在的时区
 例如:EST,MDT
 
Z
 时区偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的
 -43200~43200
 
c
 ISO 8601格式的日期
 2004-02-12T15:19:21+00:00
 
r
 RFC 822 格式的日期
 Thu, 21 Dec 2000 16:01:07 +0200
 
U
 从UNIX纪元开始至今的秒数
 time()函数
 
2.getdate()函数
可以获得日期和时间信息数组,
语法格式如下:
array getdate([ int $timestamp ])
说明:$timestamp是要转化的时间戳,如果不给出则使用当前时间。
函数根据$timestamp返回一个包含日期和时间信息的数组,数组的键名和值如表4.7所示
键 名
 说 明
 值 的 例 子
 
seconds
 秒的数字表示
 0~59
 
minutes
 分钟的数字表示
 0~59
 
hours
 小时的数字表示
 0~23
 
mday
 月份中第几天的数字表示
 1~31
 
wday
 星期中第几天的数字表示
 0(表示星期天)~6(表示星期六)
 
mon
 月份的数字表示
 1~12
 
year
 4位数字表示的完整年份
 例如:1999或2003
 
yday
 一年中第几天的数字表示
 0~365
 
weekday
 星期几的完整文本表示
 Sunday~Saturday
 
month
 月份的完整文本表示
 January~December
 
0
 自UNIX 纪元开始至今的秒数
 系统相关,典型值从-2147483648~2147483647
 
4.6.4 其他日期和时间函数
1.日期和时间的计算
复制代码 代码如下:
<?php
$oldtime=mktime(0,0,0,9,24,2008);
$newtime=mktime(0,0,0,10,12,2008);
$days=($newtime-$oldtime)/(24*3600); //计算两个时间相差的天数
echo $days; //输出18
?>

2.检查日期
checkdate()函数可以用于检查一个日期数据是否有效,语法格式如下:
bool checkdate( int $month , int $day , int $year)
复制代码 代码如下:
<?php
var_dump(checkdate(12,31,2000)); //输出bool(TRUE)
var_dump(checkdate(2,29,2001)); //输出bool(FALSE)
?>

3.设置时区
系统默认的是格林尼治标准时间,所以显示当前时间时可能与本地时间会有差别。PHP提供了可以修改时区的函数date_default_timezone_set(),
语法格式如下:
bool date_default_timezone_set (string $timezone_identifier)
参数$timezone_identifier为要指定的时区,
中国大陆可用的值是Asia/Chongqing,Asia/Shanghai,Asia/Urumqi(依次为重庆,上海,乌鲁木齐)。北京时间可以使用PRC。
4.5实例-生成日历
复制代码 代码如下:
<?php
$year=@$_GET['year']; //获得地址栏的年份
$month=@$_GET['month']; //获得地址栏的月份
if(empty($year))
$year=date("Y"); //初始化为本年度的年份
if(empty($month))
$month=date("n"); //初始化为本月的月份
$day=date("j"); //获取当天的天数
$wd_ar=array("日","一","二","三","四","五","六"); //星期数组
$wd=date("w",mktime(0,0,0,$month,1,$year)); //计算当月第一天是星期几
//年链接
$y_lnk1=$year<=1970?$year=1970:$year-1; //上一年
$y_lnk2=$year>=2037?$year=2037:$year+1; //下一年
//月链接
$m_lnk1=$month<=1?$month=1:$month-1; //上个月
$m_lnk2=$month>=12?$month=12:$month+1; //下个月
echo "<table cellpadding=6 cellspacing=0 width=200 bgcolor=#eeeeee><tr align=center bgcolor=#cccccc>";
//输出年份,单击“<”链接跳到上一年,单击“>”链接跳到下一年
echo "<td colspan=4><a href='EX4_15.php?year=$y_lnk1&month=$month'>
<</a>".$year."年<a href='EX4_15.php?year=$y_lnk2&month=$month'>></a></td>";
//输出月份,单击“<”链接跳到上个月,单击“>”链接跳到下个月
echo "<td colspan=3><a href='EX4_15.php?year=$year&month=$m_lnk1'>
<</a>".$month."月<a href='EX4_15.php?year=$year&month=$m_lnk2'>></a></td> </tr>";
echo "<tr align=center>";
for($i=0;$i<7;$i++)
{
echo "<td>$wd_ar[$i]</td> "; //输出星期数组
}
echo "</tr>";
$tnum=$wd+date("t",mktime(0,0,0,$month,1,$year)); //计算星期几加上当月的天数
for($i=0;$i<$tnum;$i++)
{
$date=$i+1-$wd; //计算日数在表格中的位置
if($i%7==0) echo "<tr align=center>"; //一行的开始
echo "<td>";
if($i>=$wd)
{
if($date==$day&&$month==date("n")) //如果是当月的当天则将天数加黑
echo "<b>".$day."</b>";
else
echo $date; //输出日数
}
echo "</td> ";
if($i%7==6) echo "</tr> "; //一行结束
}
echo "</table>";
?>

 

[!--infotagslink--]

相关文章

  • mysql_connect与mysql_pconnect的区别详解

    在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解...2016-11-25
  • MYSQL事务回滚的2个问题分析

    因此,正确的原子操作是真正被执行过的。是物理执行。在当前事务中确实能看到插入的记录。最后只不过删除了。但是AUTO_INCREMENT不会应删除而改变值。1、为什么auto_increament没有回滚?因为innodb的auto_increament的...2014-05-31
  • C#中out与ref的区别实例解析

    这篇文章主要介绍了C#中out与ref的区别实例解析,对C#初学者有不错的学习借鉴价值,需要的朋友可以参考下...2020-06-25
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • 谈谈Jquery中的children find 的区别有哪些

    精华:find方法能找子孙,children方法只能找儿子一、Jquery中children 语法.children(selector) 说明expr是表达式,可选参数,所有选择器中的表达式都可以用在这,比如按标签名"div",按类名".class",按序号":first"等等,如果表...2015-10-21
  • PS中像素大小、文档大小的区别

    在PS中像素大小、文档大小有什么区别呢,这个估计很多初学者不清楚,下面我来给大家讲解一下,希望对你有帮助。 1、像素大小 通常用于显示屏显示的图片大小的调整。菜...2016-09-14
  • Mysql索引会失效的几种情况分析

    索引并不是时时都会生效的,比如以下几种情况,将导致索引失效: 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)  注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引 ...2014-06-07
  • python 爬取京东指定商品评论并进行情感分析

    本文主要讲述了利用Python网络爬虫对指定京东商城中指定商品下的用户评论进行爬取,对数据预处理操作后进行文本情感分析,感兴趣的朋友可以了解下...2021-05-28
  • Underscore源码分析

    Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。这篇文章主要介绍了underscore源码分析相关知识,感兴趣的朋友一起学习吧...2016-01-02
  • C#中sleep和wait的区别分析

    这篇文章主要介绍了C#中sleep和wait的区别分析,有助于深入理解C#中线程的原理与使用技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • uniapp和vue的区别详解

    这篇文章主要介绍了uniapp和vue的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-10-19
  • list与push的区别

    //函数list while(list($id,$username,$password,$add_date,$mdn,$mobile,$channel,$last_date,$area,$nickname) = mysql_fetch_array($rs)){ ...2016-11-25
  • Google会不会取消PR的理由分析

    Google是这样介绍PageRank的:   Google 出类拔萃的地方在于专注开发“完美的搜索引擎”,联合创始人拉里&middot;佩奇将这种搜索引擎定义为可“确解用户...2017-07-06
  • input框中的name和id的区别

    这篇文章主要介绍了input框中的name和id的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-11-22
  • Fatal error: Cannot redeclare class 原因分析与解决办法

    我使用的都是php __autoload状态自动加载类的,今天好好的程序不知道怎么在运行时提示Fatal error: Cannot redeclare class 了,看是重复定义了类,下面我来分析一下解决办...2016-11-25
  • php switch 与 if else 区别

    在php中switch是选择,if else也有同理,但是它们肯定是有区别的,那么我们来看看它们两者的区别在哪里呢,下面先看switch case语句吧。 switch($id){ case 1: ...2016-11-25
  • 浅谈C++中字符串输入get与getline的区别

    这篇文章主要介绍了C++中字符串输入get与getline的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • php mysql localhost,127.0.0.1和ip区别

    一家之言:localhost与127.0.0.1的区别 localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析。看来这个入门问题还有人不清楚,其实这两者是有区别的。no1:localhos...2014-05-31
  • C#中类与接口的区别个人总结

    这篇文章主要介绍了C#中类与接口的区别个人总结,本文讲解了类与接口的区别、接口的用处主要体现在下面几个方面、一些接口的疑问等内容,需要的朋友可以参考下...2020-06-25
  • 详解CSS3中nth-child与nth-of-type的区别

    这篇文章详细解析了CSS3中nth-child与nth-of-type的区别,有兴趣的同学可以参考一下 CSS3中nth-child与nth-of-type的区别其实很简单::nth-of-type为什么要叫:nth-of...2017-01-22