1. 程式人生 > >php中的 nl2br() 和 strpos() 函式

php中的 nl2br() 和 strpos() 函式

nl2br()函式

我們在換行時使用的一般都是<br>,但是在大段需要換行的程式碼時,使用<br>就有些繁瑣了,這時就可以使用nl2br()函數了

nl2br()函式是在所以新行之前插入HTML換行標記,它的語法為

string nl2br(string $string[,bool $is_xhtml = true])

它的意思就是在字串string所有新行之前插入'<br />'或'<br>'並返回

下面有個例子

$str = <<<STR
張三,男,20
李四,女,19
王五,男,20
STR;

$str = nl2br($str);//nl表示換行2br表示轉換成br
echo $str;

結果為

張三,男,20
李四,女,19
王五,男,20

其中nl2br中的nl表示換行,2br表示轉換為br

strpos()函式

strpos()函式是查詢字串首次出現的位置

它的語法為

int  strpos(string  $haystack,mixed  $needle[,int  $offset = 0])

haystack : 在該字串中進行查詢

needle : 如果 needle 不是一個字串,那麼它將被轉換為整型並被視為字元的順序值。

offset : 可選的 offset

引數可以用來指定從 haystack 中的哪一個字元開始查詢。返回的數字位置是相對於 haystack 的起始位置而言的

它的返回值是以整型返回位置資訊,如果沒有找到needle,strpos()函式將會返回布林型別的false值

如下例

$str = "查詢關鍵詞(或違禁詞),如爆頭";
$n = strpos($str,'爆頭');
var_dump($n);
if($n >= 0){
echo '找到爆頭';
}else{
echo '沒有找到爆頭';
}

結果為

找到了爆頭

但像上例也有問題

當我們查詢一個字串中並沒有存在的一個字元的話,就會出錯如下例

$str = "查詢關鍵詞(或違禁詞),如爆頭";
$n = strpos($str,'我');
var_dump($n);
//false和0作比較,0就會向bool型別轉換,結果為false
if($n >= 0){
	echo '找到我';
}else{
	echo '沒有找到我';
 }

結果為

找到我

字串中並沒有‘我’ 但是卻輸出了‘找到我’,這是因為false和0作比較,0就會向bool型別轉換,結果為false,false等於false,所以才會輸出找到我

可以使用===(全等)來解決這個問題

$str = "abc";
$find = 'e';

$n = strpos($str,$find);
var_dump($n);
if($n===false){
	echo '未找到'.$find;
}else{
	echo '找到了'.$find;
}

輸出

未找到e

因為===是全等於,所以當false和0作比較時,兩個就不相等,所以輸出正確

但是不能將===寫做==,如下例

$str = "abc";
$find = 'a';

$n = strpos($str,$find);
var_dump($n);
if($n==false){
	echo '未找到'.$find;
}else{
	echo '找到了'.$find;
}

輸出

未找到a

這是因為==和===的區別導致的