在開發網站內容管理系統或展示文章時,經常需要對文章中的關鍵詞進行高亮顯示,這樣可以幫助用戶更快速地找到他們關注的信息。通過PHP 的stripos函數,可以輕鬆實現這一需求。 stripos函數是一個不區分大小寫的字符串查找函數,用於在指定字符串中查找另一個字符串的位置。利用它,我們可以遍歷文章內容,找到關鍵詞的位置,並將其包裹上HTML 標籤,以實現高亮顯示。
stripos函數的基本語法如下:
stripos(string $haystack, string $needle, int $offset = 0): int|false
$haystack :要搜索的目標字符串,即文章內容。
$needle :要查找的子字符串,即需要高亮顯示的關鍵詞。
$offset :從字符串的哪個位置開始查找,默認為0。
返回值:如果找到了關鍵詞,則返回關鍵詞在目標字符串中的位置;如果沒找到,則返回false 。
由於stripos不區分大小寫,因此可以確保即使關鍵詞的大小寫與文章中的不同,也能成功找到。
接下來,我們將通過PHP 編寫一個函數,該函數接受文章內容和關鍵詞作為參數,查找並高亮顯示所有匹配的關鍵詞。
<?php
function highlightKeyword($content, $keyword) {
// 檢查關鍵詞是否為空
if (empty($keyword)) {
return $content;
}
// 使用 stripos 查找關鍵詞,並高亮顯示
$start = 0;
while (($pos = stripos($content, $keyword, $start)) !== false) {
// 在找到的關鍵詞位置插入 HTML 標籤進行高亮
$content = substr_replace($content, "<span style='background-color: yellow;'>$keyword</span>", $pos, strlen($keyword));
// 更新搜索位置
$start = $pos + strlen($keyword);
}
return $content;
}
$article = "歡迎訪問我們的官方網站!在這裡,你可以找到各種關於 PHP 編程的教程和資源。";
$keyword = "PHP";
$highlightedArticle = highlightKeyword($article, $keyword);
echo $highlightedArticle;
?>
highlightKeyword函數:該函數接收兩個參數, $content和$keyword 。在函數內部,我們通過stripos來查找文章內容中所有出現的關鍵詞,並通過substr_replace來替換它們,給每個匹配的關鍵詞加上一個黃色背景的HTML span標籤,實現高亮顯示。
循環查找關鍵詞:在stripos查找到一個關鍵詞後,我們使用substr_replace在該位置插入HTML 標籤,包裹關鍵詞。在下一次循環中,從當前位置的下一個位置繼續查找。
返回結果:經過循環處理後,函數返回處理過的內容,所有的關鍵詞都會被高亮顯示。
假設我們的文章內容是:
歡迎訪問我們的官方網站!在這裡,你可以找到各種關於 PHP 編程的教程和資源。
如果我們傳入的關鍵詞是PHP ,輸出的結果將會是:
歡迎訪問我們的官方網站!在這裡,你可以找到各種關於 <span style='background-color: yellow;'>PHP</span> 編程的教程和資源。
關鍵詞PHP會被黃色背景的span標籤包裹,瀏覽器渲染時,顯示效果為高亮顯示。
你可以根據需要修改span標籤的樣式來實現不同的高亮效果。比如改變背景顏色、字體顏色或加粗文字等。例如:
$content = substr_replace($content, "<span style='background-color: yellow; font-weight: bold;'>$keyword</span>", $pos, strlen($keyword));
通過這種方式,你可以使高亮效果更加醒目。
通過PHP 的stripos函數,我們可以方便地在文章中找到並高亮顯示關鍵詞,提升用戶體驗。只需簡單的字符串處理和HTML 標籤嵌套,即可實現這一功能。你可以根據自己的需求進一步擴展和優化,比如處理多個關鍵詞、不同的高亮樣式等。