PHP rocks! wünscht allen Mitgliedern einen guten Rutsch ins neue Jahr 2017 !!!
Hinweis: Das Forum zieht um! Um keine Datenverluste zu haben, schalten wir zwecks Übernahme der Daten das Forum am Sonntag, den 24.04.2016 um ca. 21:00 Uhr offline und passen anschliessend die DNS-Einträge an.
www.php-rocks.de wird euch dann nach den Aktualisierungen der DNS-Server wieder wie gewohnt uneingeschränkt zur Verfügung stehen.
Danke für euer Verständnis!

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
optisch ähnliche Zeichen bei der mysqli-Abfrage berücksichtigen
#1
Diese Funktion hab ich vor einiger Zeit geschrieben, als ich nach einer Möglichkeit suchte, optisch ähnliche Zeichen bei der Datenbankabfrage zu berücksichtigen. Sie ist insbesondere bei der Abfrage von händisch erfassten Seriennummern von Geräten oÄ hilfreich. Die Funktion generiert einen Regex der mittels RLIKE bei der mysqli-Abfrage eingebaut wird. Sie kann auch leicht ausgebaut werden durch Änderung des Arrays in conf_chars().

PHP-Code:
<?php

function mkreg_confusing_chars($search){
 if(!
function_exists('conf_chars')){
 
 function conf_chars(){
 
  // similar-looking characters
 
  return array('0QOo''1Il''2Z''5S''6G');
 
 }
 }
 if(
preg_match('/['.implode(conf_chars()).']/'$search)){
 
 if(!function_exists('replace_conf_chars')){
 
  function replace_conf_chars($matches){
 
   return '['.implode(preg_grep('/'.$matches[0].'/'conf_chars())).']';
 
  }
 
 }
 
 return preg_replace_callback('/['.implode(conf_chars()).']/''replace_conf_chars'$search);
 }else{
 
 return $search;
 }
}

// vvv only for testing purposes vvv

echo '$search<br>';
echo 
'<b>'.$search.'</b><br>';
echo 
'mkreg_confusing_chars($search)<br>';
echo 
'<b>'.mkreg_confusing_chars($search).'</b>';

?>
Antworten
#2
Interessant. PHP's ICU-Anbindung Intl hat für sowas (ähnliches?) die Spoofchecker-Klasse. Ich hab allerdings noch nicht ausprobiert, ob und wie es funktioniert.
Antworten


Gehe zu: