note 100212 added to function.soundex

From: Date: Fri, 01 Oct 2010 09:20:07 +0000
Subject: note 100212 added to function.soundex
Groups: php.notes 
Request: Send a blank email to php-notes+get-172866@lists.php.net to get a copy of this message
In Nicolas Zimmers Code (erst mal VIELEN DANK DAFÜR!) gibt es einen kleinen Fehler, der php veranlasst einen uninitialized string offset zu melden, und zwar in folgendem Codestück: <?php for ($i=0;$i<$len;$i++){ $value[$i]=""; //Exceptions if ($i==0 AND $word[$i].$word[$i+1]=="cr") $value[$i]=4; foreach ($exceptionsLeading as $code=>$letters) { if (in_array($word[$i].$word[$i+1],$letters)){ $value[$i]=$code; } } ?> Da die Variable $i bis zum Wert $len - 1 steigt und $len die Länge des als Parameter mitgegebenen Wortes ist, wird der Index "$word[i+1]" am Ende des Wortes nicht mehr zum Char-Array $word gehören. Wir müssen die Bedingung in der foreach-Schleife deshalb leicht modifizieren: <?php for ($i=0;$i<$len;$i++){ $value[$i]=""; //Exceptions if ($i==0 AND $word[$i].$word[$i+1]=="cr") $value[$i]=4; foreach ($exceptionsLeading as $code=>$letters) { //Diese Bedingung ist modifiziert: if (($i < $len - 1) && in_array($word[$i].$word[$i+1],$letters)){ $value[$i]=$code; } } if ($i!=0 AND (in_array($word[$i-1].$word[$i], $exceptionsFollowing))) { $value[$i]=8; } //Normal encoding if ($value[$i]==""){ foreach ($codingTable as $code=>$letters) { if (in_array($word[$i],$letters))$value[$i]=$code; } } } ?> ---- Server IP: 194.153.94.10 Probable Submitter: 91.190.11.136 ---- Manual Page -- http://www.php.net/manual/en/function.soundex.php Edit -- https://master.php.net/note/edit/100212 Del: integrated -- https://master.php.net/note/delete/100212/integrated Del: useless -- https://master.php.net/note/delete/100212/useless Del: bad code -- https://master.php.net/note/delete/100212/bad+code Del: spam -- https://master.php.net/note/delete/100212/spam Del: non-english -- https://master.php.net/note/delete/100212/non-english Del: in docs -- https://master.php.net/note/delete/100212/in+docs Del: other reasons-- https://master.php.net/note/delete/100212 Reject -- https://master.php.net/note/reject/100212 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#172866) next »