在我的国家有一种名为'Rut'的东西,就像每个人的身份证号码一样。车辙编号格式为“12.345.678-K”(K也可以是数字)。
所以,我做了一个ajax实时搜索表单,在表格中显示我数据库中的人,当人们键入12345678k时,它转到12.345.678-k并在数据库中搜索Rut($ q是搜索词)。
SELECT * FROM clients WHERE rut LIKE '%$ruts%' OR rut LIKE '%$ruts2%' OR rut LIKE '%$q%'
格式:
//Rut format
if(strlen($q)==3){
// 123 -> 12.3
$ruts = substr_replace($q, '.', 2, -1);
}elseif(strlen($q)==4){
// 1234 -> 12.34
$ruts = substr_replace($q, '.', 2, -2);
}elseif(strlen($q)==5){
// 12345 -> 12.345
$ruts = substr_replace($q, '.', 2, -3);
}elseif(strlen($q)==6){
// 123456 -> 12.3456
// 12.3456 -> 12.345.6
$ruta = substr_replace($q, '.', 2, -4);
$ruts = substr_replace($ruta, '.', 6, -1);
}elseif(strlen($q)==7){
// 1234567 -> 12.34567
// 12.34567 -> 12.345.67
$ruta = substr_replace($q, '.', 2, -5);
$ruts = substr_replace($ruta, '.', 6, -2);
}elseif(strlen($q)==8){
// 12345678 -> 12.345.678
// 12.345678 -> 12.345.678
$ruta = substr_replace($q, '.', 2, -6);
$ruts = substr_replace($ruta, '.', 6, -3);
}elseif(strlen($q)==9){
// 12345678k -> 12.345678k
// 12.345678k -> 12.345.678k
// 12.345.678k -> 12.345.678-k
$ruta = substr_replace($q, '.', 2, -7);
$rutb = substr_replace($ruta, '.', 6, -4);
$ruts = substr_replace($rutb, '-', 10, -1);
}else{
$ruts = $q;
}
我还制作了str_replace(),以便在我输入时突出显示结果。
$highlightrut = str_replace("$ruts", "<span style='color:red'>$ruts</span>", $output['rut']);
问题是,还有另一种不同的Rut格式(1.234.567-K),我已经进行了格式转换
//Rut format 2 (1.234.567-K)
if(strlen($q)==2){
// 12 -> 1.2
$ruts2 = substr_replace($q, '.', 1, -1);
}elseif(strlen($q)==3){
// 123 -> 1.23
$ruts2 = substr_replace($q, '.', 1, -2);
}elseif(strlen($q)==4){
// 1234 -> 1.234
$ruts2 = substr_replace($q, '.', 1, -3);
}elseif(strlen($q)==5){
// 12345 -> 1.2345
// 1.2345 -> 1.234.5
$ruta2 = substr_replace($q, '.', 1, -4);
$ruts2 = substr_replace($ruta2, '.', 5, -1);
}elseif(strlen($q)==6){
// 123456 -> 1.23456
// 1.23456 -> 1.234.56
$ruta2 = substr_replace($q, '.', 1, -5);
$ruts2 = substr_replace($ruta2, '.', 5, -2);
}elseif(strlen($q)==7){
// 1234567 -> 1.234567
// 1.234567 -> 1.234.567
$ruta2 = substr_replace($q, '.', 1, -6);
$ruts2 = substr_replace($ruta2, '.', 5, -3);
}elseif(strlen($q)==8){
// 1234567k -> 1.234567k
// 1.234567k -> 1.234.567k
// 1.234.567k -> 1.234.567-k
$ruta2 = substr_replace($q, '.', 1, -7);
$rutb2 = substr_replace($ruta2, '.', 5, -4);
$ruts2 = substr_replace($rutb2, '-', 9, -1);
}else{
$ruts2 = $q;
}
但我不知道如何在同一个字符串中突出显示结果。
答案 0 :(得分:0)
我解决了,谢谢大家的支持 这是代码:
if(preg_match('~('.$ruts.')~', $output['rut'])) {
$highlightrut = str_replace("$ruts", "<span style='color:red'>$ruts</span>", $output['rut']);
}elseif(preg_match('~('.$ruts2.')~', $output['rut'])) {
$highlightrut =str_replace("$ruts2", "<span style='color:red'>$ruts2</span>", $output['rut']);
}
答案 1 :(得分:0)
你可以第二次str_replace但现在是$ highlightrut var。你将在字符串
上有两个亮点$highlightrut = str_replace("$ruts", "<span style='color:red'>$ruts</span>", $output['rut']);
$highlightrut = str_replace("$ruts2", "<span style='color:red'>$ruts2</span>", $highlightrut);
或
$highlightrut = str_replace(array("$ruts","$ruts2"), array("<span style='color:red'>$ruts</span>","<span style='color:red'>$ruts2</span>"), $output['rut']);