如何用PHP格式化证书并设置每行显示76字符?
问题:PHP处理X509证书时如何让每行显示76字符?
在JavaScript中,可通过以下代码处理X509证书,使其每行显示76字符:
substr(certificateX509, '\n'); certificateX509 = certificateX509.substr(certificateX509.indexOf('\n')); certificateX509 = certificateX509.substr(0, certificateX509.indexOf('\n-----END CERTIFICATE-----')); certificateX509 = certificateX509.replace(/\r?\n|\r/g, '').replace(/([^\0]{76})/g, '$1\n'); console.log(certificateX509);
上述代码输出的证书每行含76个字符。
而我使用PHP处理证书时,执行以下代码:
$certificado = str_replace('-----BEGIN CERTIFICATE-----', '', $certificado); $certificado = str_replace('-----END CERTIFICATE-----', '', $certificado); $certificado=trim($certificado); $certificado = str_replace("\r\n", "\n", $certificado);
得到的输出每行仅64个字符,请问如何修改PHP代码,让证书每行显示76字符?
解决方案
你需要先清除证书中的所有换行和空白字符,再按每76个字符分割插入换行。修改后的PHP代码如下:
// 一次性移除头尾的证书标记 $certificado = str_replace(['-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----'], '', $certificado); // 清除所有空白字符(换行、空格、回车等) $certificado = preg_replace('/\s+/', '', $certificado); // 按每76个字符强制分割并添加换行 $certificado = wordwrap($certificado, 76, "\n", true); echo $certificado;
代码说明:
- 用数组参数的
str_replace简化标记移除逻辑,一次处理头尾两个标记; preg_replace('/\s+/', '', $certificado)清除所有空白类字符,确保只保留证书的核心编码内容;- 调用PHP内置的
wordwrap函数,指定每行76字符并强制分割,自动插入换行符,实现每行76字符的格式要求。
内容的提问来源于stack exchange,提问作者OneL
相关产品推荐
相关产品推荐

