首次出现时搜索字符串,依此类推

时间:2014-01-24 08:13:20

标签: php

以下代码突出显示了我搜索过的所有单词 ,但我希望它只搜索第一次出现然后按钮点击搜索其他等等。“

 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>

2 个答案:

答案 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的答案。