以下代码突出显示了我搜索过的所有单词 ,但我希望它只搜索第一次出现然后按钮点击搜索其他等等。“
function writeMsg(){
$count = 0;
$str = "my bird is funny, we fun are funny, they are funny they are fun";
$keyword = $_GET['search'];
$copy_date = preg_replace("/$keyword\b/",'<b style=background- color:yellow;>'.$keyword.'</b>', $str);
echo $copy_date;
}
?>
<html>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
Please enter word to search: <input type="text" name="search"><br/>
<input type="submit" value="NEXT" />
</form>
<?php
if(isset($_GET['search'])){
writeMsg();
}
?>
</html>
答案 0 :(得分:1)
使用preg_replace_callback()
,您可以决定何时更换:
$pattern = '/' . preg_quote($keyword, '/') . '\b/';
$index = 0; // only replace first
$copy_date = preg_replace_callback($pattern, function($match) use ($index) {
static $replacements = 0;
if ($replacements++ == $index) {
return sprintf('<b style="background-color:yellow;">%s</b>',
htmlspecialchars($match[0], ENT_QUOTES, 'UTF-8')
);
} else {
return htmlspecialchars($match[0], ENT_QUOTES, 'UTF-8');
}
}, $str);
您可以将$index
设置为1,2等,以替换第二场比赛,第三场比赛等。
答案 1 :(得分:0)
添加
<input type="hidden" name="count" value="$count" />
表单中的标记用于了解每次点击后的位置。
结合@jack的答案。