PHP中nl2br strpos用法
阿新 • • 發佈:2018-11-22
一.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比較最終相等,結果就出現了問題,所以我們採用===。