📜  php 7.3 的 preg_replace 规则 - PHP (1)

📅  最后修改于: 2023-12-03 15:33:27.925000             🧑  作者: Mango

PHP 7.3 的 preg_replace 规则 - PHP

在 PHP 7.3 中,preg_replace 函数有一些新特性和规则,这些新特性和规则可以使开发更加高效和方便。

1. 第四个参数支持闭包函数

在 PHP 7.3 中,preg_replace 的第四个参数可以支持一个闭包函数。闭包函数将被用于执行替换。这个功能可以让开发者更加方便地进行复杂的替换操作。

$string = "Hello world!";
$pattern = "/Hello/";
$result = preg_replace($pattern, function ($match) {
  return "Hi";
}, $string);
echo $result; // 输出 "Hi world!"
2. Added the flags PREG_JIT_STACKLIMIT_ERROR and PREG_JIT_STACKLIMIT_WARNING

PHP 7.3 在 preg_replace 函数中添加了 PREG_JIT_STACKLIMIT_ERRORPREG_JIT_STACKLIMIT_WARNING 标志。这两个标志可以帮助开发者更好地了解使用 JIT 引擎时的性能限制。

$pattern = "/[0-9]/";
$string = "123456789";
$result = preg_replace($pattern, "-", $string, -1, $count, PREG_JIT_STACKLIMIT_ERROR);
echo "Replaced {$count} characters with JIT stacklimit error: {$result} \n";
3. 提供了两个新的预定义常量

PHP 7.3 提供了两个新的预定义常量 PREG_UNMATCHED_AS_NULLPREG_PATTERN_ORDER_WITH_GROUP. PREG_UNMATCHED_AS_NULL 允许 preg_match_all 函数将未匹配的组返回为 null,而不是忽略它们。PREG_PATTERN_ORDER_WITH_GROUP 可以让 preg_match_all 函数以组为单位返回匹配项,而不是按照整体匹配返回。

$string = "Hello world!";
$pattern = "/(\w+)\s+(\w+)/";
$result = preg_match_all($pattern, $string, $matches, PREG_PATTERN_ORDER_WITH_GROUP | PREG_UNMATCHED_AS_NULL);
print_r($matches);

以上就是 PHP 7.3 中 preg_replace 函数的一些新特性和规则。通过这些新特性和规则,开发者可以更好地进行正则表达式的处理和使用。