Add mb_levenshtein function View as Markdown

Declined
Authors
Yuya Hamada, youkidearitai@gmail.com
Date
2024-09-25
Version
0.1
Source
wiki.php.net/rfc/mb_levenshtein

Vote

Add mb_levenshtein function closed
Yes
1
No
5
6 voters
cschneid No 2025-02-21 09:48
galvao No 2025-02-25 17:22
nielsdos No 2025-02-21 22:31
reywob Yes 2025-03-06 10:12
thorstenr No 2025-03-04 12:09
timwolla No 2025-02-21 07:42

Discussions on the mailing list

[DISCUSSION] Multibyte for levenshtein function
by youkidearitai · 4 messages
[RFC] Add mb_levenshtein function
by youkidearitai · 3 messages
[RFC][VOTE] Add mb_levenshtein function
by youkidearitai · 6 messages

RFC text

Copied from wiki.php.net, last synchronized Oct 13, 2026 11:52 UTC

Introduction

Multibyte levenshtein distances have feature requests in the past. Therefore, we would like to create the mb_levenshtein function to implement this.

ref: https://github.com/php/php-src/issues/10180

Levenshtein distance difference mb_levenshtein vs grapheme_levenshtein

The mb_levenshtein function is the Levenshtein distance in code points. This is useful for comparing Unicode code points. For example, this can be used to compare concatenated characters.

var_dump(mb_levenshtein("\u{0065}\u{0301}", "\u{00e9}")); // "é" result is 1.

Surely, There are times when I want to consider this to be the same. In that case, I will propose grapheme_levenshtein separately.

Proposal

Add mb_levenshtein function.

function mb_levenshtein(string $string1, string $string2, int $insertion_cost = 1, int $replacement_cost = 1, int $deletion_cost = 1, ?string $encoding = null): int {}

Backward Incompatible Changes

This could break a function existing in userland with the same name.

Proposed PHP Version(s)

PHP 8.5

RFC Impact

To SAPIs

To SAPIs Will add the aforementioned functions to all PHP environments.

To Existing Extensions

Adds mb_levenshtein() to the mbstring extension.

To Opcache

No effect.

New Constants

No new constants.

php.ini Defaults

No changed php.ini settings.

Open Issues

https://github.com/php/php-src/issues/10180

Future Scope

This section details areas where the feature might be improved in future, but that are not currently proposed in this RFC.

Proposed Voting Choices

Include these so readers know where you are heading and can discuss the proposed voting options.

Voting

Vote: Add mb_levenshtein function — Yes: 1 · No: 5 (closed)

Implementation

https://github.com/php/php-src/pull/16043

References

Userland implementation is here:

Rejected Features

Keep this updated with features that were discussed on the mail lists.