我正在尝试使用preg_match
删除字符串的某些部分。我不知道这是不是最好的情况。
我有以下字符串:
Uploaded Today 13:11, Size 117.09 MiB, ULed by demonoidt
我想只得到字符串的117.09
部分。我正在使用这样的preg_match
:
$res = preg_replace("/[^0-9]/", "", $string);
但是这将返回字符串中找到的所有数字,所以我会有类似的东西:
131111709
非常感谢任何帮助。 谢谢你,节日快乐。
答案 0 :(得分:6)
您应该使用匹配方法而不是替换方法。
使用
/([\d.]+)\s*MiB/
或者,如果Size
字总是在数字之前,则使用
/Size\s*([\d.]+)/
并抓取第1组值。请参阅regex demo(或this demo)。
模式详情:
([\d.]+)
- 第1组捕获1个或多个数字或.
\s*
- 0+ whitespaces MiB
- 一系列文字字符。请注意,您可以将[\d.]+
替换为\d*\.?\d+
,使数字匹配部分更精确。
$re = '/([\d.]+)\s*MiB/';
$str = 'Uploaded Today 13:11, Size 117.09 MiB, ULed by demonoidt';
if (preg_match($re, $str, $match)) {
echo $match[1]; // => 117.09
}
答案 1 :(得分:2)
你也可以试试这个 -
$s = 'Uploaded Today 13:11, Size 117.09 MiB, ULed by demonoidt';
preg_match('/\d*\.\d*/', $s, $match);
var_dump($match[0]);
<强>输出强>
string(6) "117.09"
\ d *匹配一个数字(等于[0-9])
答案 2 :(得分:1)
您可以通过以下正则表达式获取它:
$re = '/(?<=Size )(\d.)+/';
$str = 'Uploaded Today 13:11, Size 117.09 MiB, ULed by demonoidt';
if (preg_match($re, $str, $match)) {
echo $match[0]; // => 117.09
}
答案 3 :(得分:-1)
@Cristian Badea如果你想提取字符串的特定部分 117.09来自你的字符串所以你也可以通过php字符串函数
获得
尝试使用下面的strpos,substr函数从整个字符串中获取117.09字符串
<?php
$a = "Uploaded Today 13:11, Size 117.09 MiB, ULed by demonoidt";
$extract = "117.09";
if(strpos($a, $extract)){
$b = substr($a, strpos($a, $extract), strlen($extract));
echo $b;
}
?>
在$ b中,你将得到你的117.09字符串(y)