登录
首页 >  文章 >  php教程

判断回文字符串的PHP函数实现

时间:2026-03-11 17:01:01 378浏览 收藏

本文详解了在PHP中判断回文字符串的两种核心方法——双指针逐位比对与反转字符串直接比较,强调必须先通过正则清洗(保留字母数字并统一转小写)以正确处理大小写、空格、标点等干扰,同时全面覆盖空串、纯符号、单字符、纯数字等边界情况,附带简洁可运行代码示例,助你写出健壮、准确且易理解的回文判定逻辑。

PHP 判断回文字符串算法题

判断一个字符串是否为回文,核心是:忽略大小写和非字母数字字符后,正读和反读完全一致。

基础思路:清洗 + 双指针比较

先过滤掉空格、标点、大小写差异等干扰,再用头尾两个指针向中间靠拢比对。

  • preg_replace('/[^a-zA-Z0-9]/', '', $s) 提取仅含字母和数字的子串
  • strtolower() 统一转小写
  • 设置左指针 $left = 0,右指针 $right = strlen($clean) - 1
  • 循环中比较 $clean[$left] === $clean[$right],不等则返回 false;相等则 $left++$right--,直到左 >= 右

更简洁写法:反转对比

适合短字符串或对性能要求不高的场景,代码直观易懂。

  • 清洗并小写化后得到 $clean
  • strrev($clean) 得到反转字符串
  • 直接返回 $clean === strrev($clean)

注意边界情况

空字符串、单字符、纯符号(如 "!!")、只有数字(如 "121")都应正确处理。

  • 空字符串 "" 是回文(清洗后仍为空,反转也为空)
  • 只含非字母数字字符(如 "!@#")清洗后为空,判为回文
  • 大小写混合(如 "A man a plan a canal Panama")清洗小写后为 "amanaplanacanalpanama",是回文

完整可运行示例

// 示例函数

function isPalindrome($s) {
  $clean = strtolower(preg_replace('/[^a-zA-Z0-9]/', '', $s));
  $left = 0;
  $right = strlen($clean) - 1;
  while ($left
    if ($clean[$left] !== $clean[$right]) {
      return false;
    }
    $left++;
    $right--;
  }
  return true;
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>