|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #60314 Metaphone returns fewer phonemes than defined
Submitted: 2011-11-16 20:52 UTC Modified: 2020-11-03 22:50 UTC
Avg. Score:3.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: gravisoft at gmail dot com Assigned: cmb (profile)
Status: Closed Package: Strings related
PHP Version: 5.3.8 OS: Windows XP SP3
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Bug Type:
From: gravisoft at gmail dot com
New email:
PHP Version: OS:


 [2011-11-16 20:52 UTC] gravisoft at gmail dot com
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:

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"


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2011-11-17 21:58 UTC]
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at and the instructions on how to report
a bug at

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-17 21:58 UTC]
-Status: Open +Status: Bogus -Package: Unknown/Other Function +Package: Strings related
 [2011-11-17 22:39 UTC] 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 23:13 UTC]
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. :)
 [2011-11-17 23:13 UTC]
-Status: Bogus +Status: Open -Package: Strings related +Package: Documentation problem
 [2017-01-28 11:36 UTC]
-Type: Bug +Type: Documentation Problem -Package: Documentation problem +Package: Strings related
 [2020-11-03 22:50 UTC]
-Status: Open +Status: Verified -Assigned To: +Assigned To: cmb
 [2020-11-04 10:10 UTC]
Automatic comment on behalf of cmb
Log: Fix #60314: Metaphone returns fewer phonemes than defined
 [2020-11-04 10:10 UTC]
-Status: Verified +Status: Closed
 [2020-11-04 17:50 UTC]
Automatic comment on behalf of mumumu
Log: Fix #60314: Metaphone returns fewer phonemes than defined
 [2020-12-30 11:58 UTC]
Automatic comment on behalf of mumumu
Log: Fix #60314: Metaphone returns fewer phonemes than defined
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Jul 18 09:01:28 2024 UTC