1. 程式人生 > >PHP中nl2br strpos用法

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比較最終相等,結果就出現了問題,所以我們採用===。