Category
stdlib · php-src-strict · PHP 8.4
Problem
PHP 8.4 adds mb_trim(), mb_ltrim(), mb_rtrim() with a named characters parameter (distinct from legacy trim() charlist rules). This compiler implements the functions on VM but parity vs php-src must cover:
- named
characters: argument binding (not confused with encoding:)
encoding: named parameter when both appear
- empty/unicode charlist edge cases matching
ext/mbstring
Maintainer repro: test/repro/maintainer_gap_mb_trim_named_characters.php
php-src reference
Repro
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
php bin/vm.php test/repro/maintainer_gap_mb_trim_named_characters.php
# Compare output to Zend PHP 8.4+ on same script
'
<?php
$s = '--héllo--';
var_dump(mb_trim($s, '-'));
var_dump(mb_trim($s, characters: '-'));
var_dump(mb_ltrim($s, characters: '-'));
var_dump(mb_rtrim($s, characters: '-'));
var_dump(mb_trim($s, encoding: 'UTF-8'));
Scope (PHP-in-PHP)
| Path |
Work |
ext/mbstring/mb_trim.php, mb_ltrim.php, mb_rtrim.php |
VM implementations |
ext/mbstring/Module.php |
registration |
lib/JIT/Builtin/ |
defer or route through VmMbstring PHP |
script/capability-matrix.php |
matrix row |
Done when
Related
Category
stdlib· php-src-strict · PHP 8.4Problem
PHP 8.4 adds
mb_trim(),mb_ltrim(),mb_rtrim()with a namedcharactersparameter (distinct from legacytrim()charlist rules). This compiler implements the functions on VM but parity vs php-src must cover:characters:argument binding (not confused withencoding:)encoding:named parameter when both appearext/mbstringMaintainer repro:
test/repro/maintainer_gap_mb_trim_named_characters.phpphp-src reference
ext/mbstring/mbstring.c—mb_trim,mb_ltrim,mb_rtrimext/mbstring/mbstring.stub.php— signaturesRepro
Scope (PHP-in-PHP)
ext/mbstring/mb_trim.php,mb_ltrim.php,mb_rtrim.phpext/mbstring/Module.phplib/JIT/Builtin/script/capability-matrix.phpDone when
characters/encodingcombinations testedtest/compliance/cases/stdlib/mb_trim_named.phptgreenRelated