php 截取base64内容,PHP-从长文本中删除Base64字符串

我真的很想知道我是否真的是第一个问这个问题的人,还是我如此盲目地找到一些关于这个问题的信息…

我有一个较长的文本,我想剥离它的base64编码的字符串

I am a text and have some lines with some content

There are more than one line but sometimes I have

aSBhbSBhIG5vcm1hbCB0ZXh0IHRoYXQgd2FzIGNvZ

GVkIGluIGJhc2UgNjQgYW5kIG5vdyBpIHdhcyB0cmFu

c2xhdGVkIGJhY2sgdG8gYmxhbmsgdGV4dGZvcm1hd

C4gaSB0aGFuayB5b3UgZm9yIHBheWluZyBhdHRlbnRp

b24uIGJ5ZQ==

and this is what I want to strip / extract by using php

如您所见,文本中有base64编码的数据,我想提取/分割这些行.

我已经尝试了很多类似的正则表达式示例

$regex = '@^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$@m';

preg_match($regex, $content, $output_array );

但这并没有解决任何问题…

我需要的是仅选择基本字符串的正则表达式…

这有可能吗?我的意思是正则表达式可以选择base64吗?我猜 :)

编辑:字符串源是电子邮件的内容

EDIT2:猜测这种情况下的最佳语法,以便跟踪具有多个大写字符且可以有数字且没有空格的字符串.但是正则表达式不是我的日常食物:D

解决方法:

首先:您不能可靠地做到这一点!

为什么?

很简单,在某些情况下,base64之所以如此出色的原因是,它使用“标准”字符对所有数据进行编码.那些用于普通文本,句子甚至是甚至是单词的单词.

背景

“ Hello”是base64编码的字符串吗?好吧,是的,其含义是“有效的base64编码”.它可能会返回很多乱码,但这是一个base64-ok字符串.

因此,您只能决定一个长度,在此长度之后,您可以认为所连接的字符没有任何空格进行base64编码.当然,在德语这样的语言中,您可能在这里遇到很多麻烦,因为那里有一个复合名词,例如“Bäckerfachverkäuferinnenhosenherstellungsautomatenzuliefererdienst”或诸如此类.

解决方法

因此,从长度上来说,您必须自行决定,然后就可以这样做:

[a-zA-Z0-9\+\/\=]{20,}

我认为“ 20”是此处“ base64编码的内容”的最小长度,但是正如您所说,这取决于您.另外,请注意,=并不是真正的编码内容,而是填充字节,但我仍将其添加到了正则表达式中.

编辑:Gnah ..您甚至可以在我的示例中看到我没有抓住最后一行:)将数字更改为12时,它在这里可以正常工作,但是可能有超过12个字符的单词…所以-如前所述,以这种方式并不是真的可靠.

标签:php,regex

来源: https://codeday.me/bug/20191119/2033854.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值