解析格式化文本并提取两个值
如何使用 PHP 中的正则表达式从此类字符串中获取百分比和文件大小?
问题是我使用 print_r()
函数获取这个字符串,如下所示:
while(!feof($handle))
{
$progress = fread($handle, 8192);
print_r($progress);
}
上面的输出是这样的:
[download] 28.8% of 1.51M at 171.30k/s ETA 00:06
我确定我需要使用类似 preg_match()
的东西但不知道如何对数组执行此操作以及如何引用字符串。 正则表达式需要放置在循环内。
How do I get the percentage and filesize from this sort of string using regex in PHP?
The thing is I get this string using the print_r()
function like so:
while(!feof($handle))
{
$progress = fread($handle, 8192);
print_r($progress);
}
The above outputs something like this:
[download] 28.8% of 1.51M at 171.30k/s ETA 00:06
I'm sure I need to use something like preg_match()
but not sure how to do it for an array plus how do I reference the string. The regex needs to be placed inside the loop.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
尝试这个:
Try this:
您也可以只使用:
它可能比正则表达式更快,并且更易于阅读。
You can also just use:
It's probably faster than a regex, and easier to read.
因为您的字符串的格式是可预测的,并且重点是提取而不是验证,所以我同意 @gitaarik 的观点,因为
explode()
可能是合适的。将字符串按空格分开,在获得所有所需元素后,再向爆炸限制添加一个元素,以便所有“剩余元素”都放入最后一个元素中。
使用数组解构语法,您可以仅声明以下变量:你打算使用。
好处是代码性能、可读性,并且不需要正则表达式知识。
代码:(演示)
输出:
Because your string is predictably formatted and the focus is to extract instead of validate, I agree with @gitaarik in that
explode()
can be suitable.Split the string on spaces and after you have all of the desired elements, add one more element to the explosion limit so that all of the "leftovers" are slopped into the that last element.
Using array destructuring syntax, you can declare only the variables that you intend to use.
The benefits will be code performance, readability, and no regex knowledge is necessary.
Code: (Demo)
Output: