douping5015 2015-03-19 16:05
浏览 51
已采纳

PHP在字符串中查找多个单词并包装在<span>标记中

Im finding keyword "paintball" in a string, and wrapping it in span tags to change it colour to red like this...

$newoutput = str_replace("Paintball", "<span style=\"color:red;\">Paintball</span>", $output); 

echo $newoutput;

Which works, but people are writing it in the field as "Paintball", "paintball", "Paint Ball", "paint ball" etc.

Is there a better way of doing this rather than repeating it for every word?

Ideally something like...

$words = "Paintball", "paintball", "Paint Ball", "paint ball";

$newoutput = str_replace("($words)", "<span>$1</span>", $output);

But im not sure how to write it.

Ok, so a mixture of answers got me here...

$newoutput = preg_replace("/(paint\s*ball|airsoft|laser\s*tag)/i", "<span>$1</span>", $output); 
    echo $newoutput;

And it works perfectly, thank you very much!

  • 写回答

4条回答 默认 最新

  • dongyu9894 2015-03-19 16:11
    关注

    This should work for you:

    (Here I just use preg_replace() with the modifier i for case insensitivity)

    <?php
    
        $output = "LaSer Tag";
        $newoutput = preg_replace("/(Airsoft|Paintball|laser tag)/i", "<span style=\"color:red;\">$1</span>", $output); 
        echo $newoutput;
    
    ?>
    

    EDIT:

    Besides that this is invalid syntax:

    $words = "Paintball", "paintball", "Paint Ball", "paint ball";
    

    and you probably meant this:

    $words = ["Paintball", "paintball", "Paint Ball", "paint ball"];
           //^ See here array syntax                              ^
    

    You can use something like this then

    $newoutput = preg_replace("/(" . implode("|", $words) . ")/i", "<span style=\"color:red;\">$1</span>", $output); 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程