语法高亮,不区分大小写的语法
Syntax highlighting, with case insensitive syntax
我正在尝试编写搜索和语法荧光笔。假设我们有一个基本查询,即根据关键字查询国家/地区,例如 uni.
现在,我正在使用 Sphinx 从数据库中获取与此关键字匹配的结果,并且我正在使用不区分大小写的搜索。 sphinx return 的结果如下:
Tanzania, United Republic of
United Arab Emirates
United Kingdom
United States
Igaunija
Estados unidos Mexicanos
我现在想突出显示这些字符串中的搜索关键字,方法是将关键字包装在 <span>
.
中
为此,我尝试执行以下操作:
$search='uni';
foreach($keyword as $text) { // $keyword is an array, containg each found result one by one
$text=str_replace($search, "<span>".$search."</span>", $text);
}
编写此代码时,只有 Iguanija
和 Estados unidos Mexicanos
会突出显示,因为在其他所有情况下,关键字都以大写字母开头。如果我将 str_replace
更改为 str_ireplace
,每个搜索关键字都会突出显示,但在前几个条目中,大写 U
会替换为小写 u
,因此从United Kingdom
,我得到 united Kingdom
。如何突出显示搜索关键字,并保持结果中字符的大小写?
我想要的结果是这样的:
Tanzania, <span>Uni</span>ted Republic of
<span>Uni</span>ted Arab Emirates
<span>Uni</span>ted Kingdom
<span>Uni</span>ted States
Iga<span>uni</span>ja
Estados <span>uni</span>dos Mexicanos
您可以使用正则表达式来保留源字符串的大小写。
<?php
$unis = <<< UNIS
Tanzania, United Republic of
United Arab Emirates
United Kingdom
United States
Igaunija
Estados unidos Mexicanos
UNIS;
var_dump(preg_replace('/(uni)/i','<span></span>',$unis));
输出
string(190) "Tanzania, <span>Uni</span>ted Republic of
<span>Uni</span>ted Arab Emirates <span>Uni</span>ted Kingdom
<span>Uni</span>ted States Iga<span>uni</span>ja Estados
<span>uni</span>dos Mexicanos"
我正在尝试编写搜索和语法荧光笔。假设我们有一个基本查询,即根据关键字查询国家/地区,例如 uni.
现在,我正在使用 Sphinx 从数据库中获取与此关键字匹配的结果,并且我正在使用不区分大小写的搜索。 sphinx return 的结果如下:
Tanzania, United Republic of
United Arab Emirates
United Kingdom
United States
Igaunija
Estados unidos Mexicanos
我现在想突出显示这些字符串中的搜索关键字,方法是将关键字包装在 <span>
.
为此,我尝试执行以下操作:
$search='uni';
foreach($keyword as $text) { // $keyword is an array, containg each found result one by one
$text=str_replace($search, "<span>".$search."</span>", $text);
}
编写此代码时,只有 Iguanija
和 Estados unidos Mexicanos
会突出显示,因为在其他所有情况下,关键字都以大写字母开头。如果我将 str_replace
更改为 str_ireplace
,每个搜索关键字都会突出显示,但在前几个条目中,大写 U
会替换为小写 u
,因此从United Kingdom
,我得到 united Kingdom
。如何突出显示搜索关键字,并保持结果中字符的大小写?
我想要的结果是这样的:
Tanzania, <span>Uni</span>ted Republic of
<span>Uni</span>ted Arab Emirates
<span>Uni</span>ted Kingdom
<span>Uni</span>ted States
Iga<span>uni</span>ja
Estados <span>uni</span>dos Mexicanos
您可以使用正则表达式来保留源字符串的大小写。
<?php
$unis = <<< UNIS
Tanzania, United Republic of
United Arab Emirates
United Kingdom
United States
Igaunija
Estados unidos Mexicanos
UNIS;
var_dump(preg_replace('/(uni)/i','<span></span>',$unis));
输出
string(190) "Tanzania, <span>Uni</span>ted Republic of
<span>Uni</span>ted Arab Emirates <span>Uni</span>ted Kingdom
<span>Uni</span>ted States Iga<span>uni</span>ja Estados
<span>uni</span>dos Mexicanos"