Bug #60314 [Bgs->Opn]: Metaphone returns fewer phonemes than defined

From: Date: Thu, 17 Nov 2011 23:13:22 +0000
Subject: Bug #60314 [Bgs->Opn]: Metaphone returns fewer phonemes than defined
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-165298@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=60314&edit=1

 ID:                 60314
 Updated by:         felipe@php.net
 Reported by:        gravisoft at gmail dot com
 Summary:            Metaphone returns fewer phonemes than defined
-Status:             Bogus
+Status:             Open
 Type:               Bug
-Package:            Strings related
+Package:            Documentation problem
 Operating System:   Windows XP SP3
 PHP Version:        5.3.8
 Block user comment: N
 Private report:     N

 New Comment:

Yes, in fact it isn't a phonemes limit nor an strict string limit. Because it doesn't does
wrapping in this case when it yields more than 1 char in the end.

You're right, the documentation must be updated accordially. :)


Previous Comments:
------------------------------------------------------------------------
[2011-11-17 22:39:17] gravisoft at gmail dot com

This doesn't have anything to do with it "going over" the phoneme limit parameter,
it's about it translating too few phonemes.

If you're defining (X -> KS) as one phoneme, then metpahone('axc', 3) ==
'AKS' is incorrect because it only translated (A -> A) and (X -> KS) which is two
phonemes.  Translating three phonemes - (A->A), (X->KS), (C->K) -  should have yielded
'AKSK'.

If you're defining each K and S from (X -> KS) as a phoneme, then metaphone('axc',
2) == 'AKS' is incorrect as per bug #60123 (going over restricted number of phoneme
characters).  If that isn't a bug, then the documentation should be modified to note it as
such.

Regardless, something is amiss here.

------------------------------------------------------------------------
[2011-11-17 21:58:05] felipe@php.net

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php

It works following the Text-Metaphone CPAN package, it stop decoding when reach the limit of
phonems, but when decoding the last char it can pass the limit suplied, because this
metaphone('AX', 2) == metaphone('AXC', 3).

------------------------------------------------------------------------
[2011-11-16 20:52:15] gravisoft at gmail dot com

Description:
------------
Under certain conditions, the metaphone function returns fewer phonemes than the $phonemes parameter
specifies.  This is an edge-case occurrence when dealing with an X near the end of the specified
phoneme count.

For the test script, the following phoneme transformations take place:
A -> A
X -> KS
C -> K

Test script:
---------------
<?php

var_dump('axccc', 2);  // Should produce AKS
var_dump('axccc', 3);  // Should produce AKSK as "X->KS" is one phoneme
var_dump('axccc', 0);  // Should produce AKSKKK

?>

Expected result:
----------------
string(3) "AKS"
string(4) "AKSK"
string(6) "AKSKKK"

Actual result:
--------------
string(3) "AKS"
string(3) "AKS"
string(6) "AKSKKK"


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=60314&edit=1


Thread (4 messages)

« previous php.bugs (#165298) next »