В моей стране есть что-то вроде «Рут», это как идентификационный номер для каждого человека. Формат номера 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']);
Проблема заключается в том, что существует еще один Diferent формат гона (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;
}
Но я не знаю, как выделить приводит к той же строке.
Что именно вы имеете в виду, выделив результаты в той же строке? У вас есть '$ rut2' и' $ rut'? Используйте флаг, указывающий, какой формат соответствует, и соответственно установите $ highlightrut. Por cierto, extrano a Chile po! :) – eol
Прошу прощения, я имею в виду в той же камере. Результаты запроса отображаются в таблице, а результат Rut sesult показан в ячейке. Итак, когда я ищу «1256», он действительно ищет «12.56», поэтому, если колея «12.563.589-K», то выделится («12.56»). Я хочу сделать то же самое с другим форматом rut. Также, как использовать флаг? Салудос отделил Чили! – Juanky
Не было бы проще хранить все номера Rut в формате 12345678k в вашей базе данных? – simon