--- tags: 程式設計基礎,字串尋找,php,html --- 字串尋找 ======= 這邊我們指定使用while來製作這個功能,因為我們並不清楚需要找的字串長度為多少,以及到底要找到那個部份才需要停止,這種不確定次數的情境,比較適合使用while。 我們先對問題進行分析,再來思考如何撰寫程式: 1. 需要一個變數來儲存原始字串。 2. 需要一個變數來儲存要尋找的字元。 3. 由原始字串的第一個字元開始逐一和要尋找的字元做比較。 4. 如果比較的結果是相符的,則尋找結束,並記下字元在原始字串的位置。 5. 如果比較的結果不相符,則往下一個字元尋找及比較。 6. 如果尋找到原始字串的最後一個字元都還沒有找到相符的,那麼就停止尋找,並輸出"沒有找到相符的字元" 我們先解決比較簡單的變數問題: ```php= $string="today is a good day to play"; //原始字串 $target="d"; //要尋找的字元 ``` 在PHP中,字串本身其實是一個字元組成的陣列,因此我們可以使用`$var[2]`的方式來取出字串中的某個字元,利用這個特性,我們就可以使用迴圈來完成對原始字串做遍歷的動作。 接著是比較的問題,我們在每一次的迴圈中,每取出一個字元就要和`$target`做比較,然後根據比較的結果來決定後續的動作,這裹的比較我們使用`if(){}`來處理: ```php= if($string[$i]==$target){ //如果找到了相符的字元..... }else{ //如果沒找到相符的字元..... } ``` 接著我們要如何判斷整個迴圈何時該停止?如何讓迴圈知道已經找到最後一個字元了? 判斷字串的長度可以使用`strlen()`這個函式,而是否找到的狀態,我們可以設一個變數來儲存狀態,預設為false,如果有找到相符的字元,則將這個變數的值改為true。 另外我們也需要一個變數來儲存目前尋找到的字串位置,隨著迴圈的進行,這個值會每次加1; ```php= $found=false; //建立一個是否找到的狀態值,預設為false $pos=0; //建立一個位置的變數,用來記錄目前進行到字串的那個位置 ``` 綜合以上的設定,我們開始撰寫程式來滿足我們做的分析: ```php= $string="today is a good day to play"; $target="d"; $found=false; $pos=0; while(!$found && $pos<strlen($string)){ //如果還沒找到並且位置小於字串的長度 if($string[$pos]==$target){ $found=true; echo "找到了,位置在" . $pos; } $pos++; } if($found==false){ echo "沒有找到"; } ``` PHP內建的尋找字串函數為`strpos()` 課後練習 ------ 1. 嘗試將尋找目標由一個字元改成多個字元,比如尋找"day"。 2. 如果要以for迴圈來製作這個功能,應該要如何修改程式碼?
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up