PHP中nl2br strpos用法

一.nl2br

nl2br,就是在字符串所有新行之前插入html换行标记。用来解决需要大量换行而太过麻烦的问题,举个例子:

<?php
header("content-type:text/html;charset=utf-8");

$m = <<<STR
张三,男,20
李四,女,19
王五,女,21


STR;

echo $m;  

若直接输出$m则三条内容都会出现在一行,普通换行需要在每条后加<br>太过麻烦,若记录过多,则要加上千个<br>,所以采用nl2br简化代码。

$m = <<<STR
张三,男,20
李四,女,19
王五,女,21
STR;
$n = nl2br($m);  //实现自动换行
echo $n; 

二.strpos

strpos用于查找字符串首次出现的位置。

int strpos(string $haystack,mixed $needle [,int $offset=0])此为strpos语法,有三个函数。其中第一个函数表示在此字符串中查找,第二个函数表示需要查找的字符串,若它不是一个字符串,那它将被转化成整型并被视为字符的顺序值。第三个函数可选写或不写,可指定从$haystack中哪个字符开始查找。strpos函数以整型返回位置信息,若未找到第二个参数needle则会返回布尔型的false值。

此时容易出现问题,下面代码中,最后结果为存在,而给定的字符串$m中并未出现e,


$m = 'abc';
$n = strpos($m,'e');
var_dump($n);  

if($n>=0){
	echo '存在';

}else{
	echo '不存在';
}

原因就涉及到false与0的比较了,之前提过若没找到needle则会返回布尔型的false值,没有找到e,此时$n存的是false,而false与0的数据类型不一致,0向布尔型转换,转换结果也是false,所以符合>=的条件,就会存在了。而要避免这个问题,我们可以采用===全等于来写if语句,如下

if($n===false){
	echo '不存在';

}else{
	echo '存在';
}

如此,若是存在那必不等于false了,如不存在就返回false最终结果也是正确的。至于为什么不选用==而是===是因为==并没有包括数据类型的相等,若是字符出现在第一个位置,那它就是0,又会涉及到0与false比较最终相等,结果就出现了问题,所以我们采用===。

猜你喜欢

转载自blog.csdn.net/qinran_585/article/details/83959324