preg_replace_callback $count number of matches, number of replacements
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C
- Estrellas
- 40.4k
- Forks
- 8.2k
- Merge medio
- 2 d 13 h
- PR fusionados (30 d)
- 96
Descripción
Description
The following code:
<?php
$before = 'abca';
$after = preg_replace( '/a/', 'a', $before, -1, $count );
if ( $after === $before ) {
echo "NO REPLACEMENTS" . PHP_EOL;
}
echo $count . " REPLACEMENTS";
Resulted in this output:
NO REPLACEMENTS
2 REPLACEMENTS
But I expected this output instead:
NO REPLACEMENTS
0 REPLACEMENTS
https://www.php.net/manual/en/function.preg-replace.php
If specified, this variable will be filled with the number of replacements done.
Technically, this is correct, since the replacement is identical to the search string.
While for preg_replace this makes practically no difference (except for cases where backslash is incorrectly escaped, you could end up with a preg that says it replaced even though it didn't change the input)
Practically for preg_replace_callback this means however, that you always have to compare before/after to be sure whether anything was replaced at all.
And there's no way of knowing how many replacements were actually done.
Changing the behavior should generally be safe I guess, but otherwise just adding an additional param "$replacement_count" for preg_replace_callback would make sense? (so the 1st param docs would be changed to be "number of matches")
PHP Version
8.5
Operating System
No response
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza reproduciendo el ejemplo enlazado de PHP 8.5 y compara preg_replace con preg_replace_callback. Lee la documentación de preg_replace y rastrea cómo se define el count existente como el número de reemplazos; el issue estará completo cuando el proyecto tenga un comportamiento decidido y documentado para los recuentos de coincidencias frente a los de reemplazos, y se haya abordado la limitación del callback enlazada.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- php
- Área
- backend
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100