summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2009-06-30 11:46:20 +0000
committerFelipe Pena <felipe@php.net>2009-06-30 11:46:20 +0000
commit0e294f21212bf7b6d52847f7e68aa0f30b7ad4cc (patch)
tree5fceef8364e574285e62597919b48550093b3258
parent51f8b64752b94e8e2b63f5218a52e6e7c1ab1802 (diff)
downloadphp-git-0e294f21212bf7b6d52847f7e68aa0f30b7ad4cc.tar.gz
- MFH: Fixed bug #48709 (metaphone and 'wh')
-rw-r--r--ext/standard/metaphone.c7
-rw-r--r--ext/standard/tests/strings/bug48709.phpt31
2 files changed, 34 insertions, 4 deletions
diff --git a/ext/standard/metaphone.c b/ext/standard/metaphone.c
index bf66a79b86..d39ea13194 100644
--- a/ext/standard/metaphone.c
+++ b/ext/standard/metaphone.c
@@ -225,15 +225,14 @@ static int metaphone(unsigned char *word, int word_len, long max_phonemes, char
w_idx += 2;
}
break;
- /* WH becomes H,
+ /* WH becomes W,
WR becomes R
W if followed by a vowel */
case 'W':
- if (Next_Letter == 'H' ||
- Next_Letter == 'R') {
+ if (Next_Letter == 'R') {
Phonize(Next_Letter);
w_idx += 2;
- } else if (isvowel(Next_Letter)) {
+ } else if (Next_Letter == 'H' || isvowel(Next_Letter)) {
Phonize('W');
w_idx += 2;
}
diff --git a/ext/standard/tests/strings/bug48709.phpt b/ext/standard/tests/strings/bug48709.phpt
new file mode 100644
index 0000000000..999a2c6513
--- /dev/null
+++ b/ext/standard/tests/strings/bug48709.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Bug #48709 (metaphone and 'wh')
+--FILE--
+<?php
+
+/* Initial letter exceptions */
+$exceptions = array(
+ 'kn', // Drop first letter
+ 'gn', // ditto
+ 'pn', // ditto
+ 'ae', // ditto
+ 'wr', // ditto
+ 'x', // s
+ 'wh', // w
+ 'wa' // w
+);
+
+foreach ($exceptions as $letter) {
+ printf("%s => %s\n", $letter, metaphone($letter));
+}
+
+?>
+--EXPECT--
+kn => N
+gn => N
+pn => N
+ae => E
+wr => R
+x => S
+wh => W
+wa => W