PHP废弃函数怎么替换

wen PHP项目 2

本文目录导读:

PHP废弃函数怎么替换

  1. *mysql_ 系列函数(PHP 5.5+ 废弃,PHP 7.0+ 移除)**
  2. eregi() / ereg() 函数(PHP 5.3+ 废弃,PHP 7.0+ 移除)
  3. split() 函数(PHP 5.3+ 废弃)
  4. each() 函数(PHP 7.2+ 废弃)
  5. create_function() 函数(PHP 7.2+ 废弃)
  6. money_format() 函数(PHP 7.4+ 废弃)
  7. get_magic_quotes_gpc() 函数(PHP 7.4+ 废弃)
  8. hebrev() 和 hebrevc() 函数(PHP 7.4+ 废弃)
  9. is_real() 函数(PHP 7.4+ 废弃)
  10. fgetss() 函数(PHP 7.3+ 废弃)
  11. implode() 参数顺序(PHP 7.4+ 废弃)
  12. assert() 字符串参数(PHP 7.2+ 废弃)
  13. 检测废弃函数的方法:
  14. 替换建议:

在PHP开发中,废弃(Deprecated)函数需要及时替换以确保代码的安全性和兼容性,以下是常见的废弃函数及其替换方案:

*mysql_ 系列函数(PHP 5.5+ 废弃,PHP 7.0+ 移除)**

// 废弃写法
$conn = mysql_connect("localhost", "user", "pass");
mysql_select_db("database", $conn);
$result = mysql_query("SELECT * FROM users", $conn);
while ($row = mysql_fetch_array($result)) {
    echo $row['username'];
}
// 替换为 MySQLi 面向对象
$conn = new mysqli("localhost", "user", "pass", "database");
$result = $conn->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
    echo $row['username'];
}
// 或替换为 PDO
$pdo = new PDO("mysql:host=localhost;dbname=database", "user", "pass");
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['username'];
}

eregi() / ereg() 函数(PHP 5.3+ 废弃,PHP 7.0+ 移除)

// 废弃写法
if (eregi("^[a-z]+$", $username)) {
    echo "Valid username";
}
// 替换为 preg_match()
if (preg_match("/^[a-z]+$/i", $username)) {
    echo "Valid username";
}

split() 函数(PHP 5.3+ 废弃)

// 废弃写法
$parts = split(":", $string);
// 替换为 explode()(简单分隔符)
$parts = explode(":", $string);
// 或替换为 preg_split()(正则表达式)
$parts = preg_split("/:/", $string);

each() 函数(PHP 7.2+ 废弃)

// 废弃写法
while (list($key, $value) = each($array)) {
    echo "$key: $value";
}
// 替换为 foreach
foreach ($array as $key => $value) {
    echo "$key: $value";
}

create_function() 函数(PHP 7.2+ 废弃)

// 废弃写法
$func = create_function('$x', 'return $x * 2;');
echo $func(5); // 10
// 替换为匿名函数(闭包)
$func = function($x) {
    return $x * 2;
};
echo $func(5); // 10

money_format() 函数(PHP 7.4+ 废弃)

// 废弃写法
$amount = 1234.56;
echo money_format('%.2n', $amount);
// 替换为 number_format()
$amount = 1234.56;
echo '$' . number_format($amount, 2);

get_magic_quotes_gpc() 函数(PHP 7.4+ 废弃)

// 废弃写法
if (get_magic_quotes_gpc()) {
    $data = stripslashes($_POST['data']);
}
// 不再需要,使用 filter_input() 或直接处理
$data = filter_input(INPUT_POST, 'data', FILTER_SANITIZE_STRING);

hebrev() 和 hebrevc() 函数(PHP 7.4+ 废弃)

// 废弃写法
echo hebrev($hebrew_text);
// 替换为使用 mb_* 函数
echo mb_convert_encoding($hebrew_text, 'UTF-8', 'ISO-8859-8');

is_real() 函数(PHP 7.4+ 废弃)

// 废弃写法
if (is_real($number)) { }
// 替换为 is_float() 或 is_double()
if (is_float($number)) { }

fgetss() 函数(PHP 7.3+ 废弃)

// 废弃写法
$handle = fopen("file.html", "r");
while (($line = fgetss($handle)) !== false) {
    echo $line;
}
// 替换为 fgets() + strip_tags()
$handle = fopen("file.html", "r");
while (($line = fgets($handle)) !== false) {
    echo strip_tags($line);
}

implode() 参数顺序(PHP 7.4+ 废弃)

// 废弃写法(参数顺序错误)
$string = implode($array, ",");
// 推荐写法(正确参数顺序)
$string = implode(",", $array);
// 或
$string = implode(", ", $fruit_array);

assert() 字符串参数(PHP 7.2+ 废弃)

// 废弃写法
assert('$a > $b');
// 替换为
assert($a > $b);

检测废弃函数的方法:

使用 PHP 内置函数检测

// 在开发环境开启错误报告
error_reporting(E_ALL);
ini_set('display_errors', 1);
// 或使用 error_reporting(E_ALL & ~E_DEPRECATED) 忽略废弃警告

使用代码静态分析工具

# 安装 PHPStan
composer require --dev phpstan/phpstan
# 运行分析
vendor/bin/phpstan analyse src --level=8

使用 IDE 提示

  • PhpStorm、VS Code 等 IDE 会自动提示废弃函数

在线工具

  • https://phpcompatibility.com/
  • PHP Compatibility Checker

替换建议:

  1. 优先使用 PDO 处理数据库操作
  2. 使用现代数组函数 替代旧函数
  3. 使用匿名函数 替代 create_function
  4. 使用正则表达式新语法(preg_*)
  5. 遵循 PSR 标准 规范代码

及时更新废弃函数不仅能避免安全隐患,还能提高代码性能和可维护性。

抱歉,评论功能暂时关闭!