sean            Thu Dec  2 12:52:04 2004 EDT

  Modified files:              
    /phpdoc/en/reference/strings/functions      levenshtein.xml 
  Log:
  added example
  
http://cvs.php.net/diff.php/phpdoc/en/reference/strings/functions/levenshtein.xml?r1=1.5&r2=1.6&ty=u
Index: phpdoc/en/reference/strings/functions/levenshtein.xml
diff -u phpdoc/en/reference/strings/functions/levenshtein.xml:1.5 
phpdoc/en/reference/strings/functions/levenshtein.xml:1.6
--- phpdoc/en/reference/strings/functions/levenshtein.xml:1.5   Thu Oct 28 
05:44:22 2004
+++ phpdoc/en/reference/strings/functions/levenshtein.xml       Thu Dec  2 
12:52:04 2004
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.5 $ -->
+<!-- $Revision: 1.6 $ -->
 <!-- splitted from ./en/functions/strings.xml, last change in rev 1.12 -->
   <refentry id="function.levenshtein">
    <refnamediv>
-    <refname>levenshtein</refname> 
+    <refname>levenshtein</refname>
     <refpurpose>
      Calculate Levenshtein distance between two strings
     </refpurpose>
@@ -48,14 +48,14 @@
      insert, replace and delete operations needed to transform
      <parameter>str1</parameter> into <parameter>str2</parameter>.
     </para>
-    <para> 
+    <para>
      A second variant will take three additional parameters that
      define the cost of insert, replace and delete operations.  This
      is more general and adaptive than variant one, but not as
      efficient.
     </para>
     <!--  Callback function not yet implemented, see bug #29552
-    <para> 
+    <para>
      The third variant (which is not implemented yet) will be the most
      general and adaptive, but also the slowest alternative.  It will
      call a user-supplied function that will determine the cost for
@@ -105,7 +105,7 @@
      describing the cost for this particular operation, but it may
      decide to use only some of the supplied arguments.
     </para>
-    <para> 
+    <para>
      The user-supplied function approach offers the possibility to
      take into account the relevance of and/or difference between
      certain symbols (characters) or even the context those symbols
@@ -116,6 +116,68 @@
     </para>
     -->
     <para>
+     <example>
+      <title><function>levenshtein</function> example</title>
+      <programlisting role="php">
+<![CDATA[
+<?php
+// input misspelled word
+$myWord = 'carrrot';
+
+// array of words to check against
+$words  = array('apple','pineapple','banana','orange',
+                'radish','carrot','pea','bean','potato');
+
+// no shortest distance found, yet
+$shortest = -1;
+
+// loop through words to find the closest
+foreach ($words AS $word) {
+
+    // calculate the distance between the input word,
+    // and the current word
+    $thisLev = levenshtein($myWord, $word);
+
+    // check for an exact match
+    if ($thisLev == 0) {
+
+        // closest word is this one (exact match)
+        $closest = $word;
+        $shortest = 0;
+
+        // break out of the loop; we've found an exact match
+        break;
+    }
+
+    // if this distance is less than the next found shortest
+    // distance, OR if a next shortest word has not yet been found
+    if ($thisLev <= $shortest || $shortest < 0) {
+        // set the closest matchm, and shortest distance
+        $closest  = $word;
+        $shortest = $thisLev;
+    }
+}
+
+echo "Input word: $myWord\n";
+if ($shortest == 0) {
+    echo "Exact match found: $closest\n";
+} else {
+    echo "Did you mean: $closest?\n";
+}
+
+?>
+]]>
+      </programlisting>
+     </example>
+     &example.outputs;
+     <screen>
+<![CDATA[
+Input word: carrrot
+Did you mean: carrot?
+]]>
+     </screen>
+    </para>
+    <para>
      See also <function>soundex</function>,
      <function>similar_text</function>, and
      <function>metaphone</function>.

Reply via email to