Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_replace-从字符串中删除不需要的字符以返回数值_Php_Regex_String - Fatal编程技术网

Php preg_replace-从字符串中删除不需要的字符以返回数值

Php preg_replace-从字符串中删除不需要的字符以返回数值,php,regex,string,Php,Regex,String,我讨厌正则表达式,我希望有人能帮我用一个正则表达式来替换preg_ 我想使用preg_replace从字符串中去掉不需要的字符,只返回一个数值 字符串格式可以如下所示: 一些短信100英镑 100英镑一些文本 一些文本100一些文本 非常感谢试试这个: preg_replace('/[^0-9]/','',$text); preg_replace("/\D+/", "", "SOME TEXT £100") 您还可以使用preg\u match获取第一个数字: preg_match("/\d

我讨厌正则表达式,我希望有人能帮我用一个正则表达式来替换preg_

我想使用preg_replace从字符串中去掉不需要的字符,只返回一个数值

字符串格式可以如下所示:

一些短信100英镑

100英镑一些文本

一些文本100一些文本

非常感谢

试试这个:

preg_replace('/[^0-9]/','',$text);
preg_replace("/\D+/", "", "SOME TEXT £100")
您还可以使用
preg\u match
获取第一个数字:

preg_match("/\d+/", "SOME TEXT £100", $matches);
$number = $matches[0];
[]中的“^”表示除以下内容以外的任何内容

编辑 删除多余的
+

$l = preg_replace("/[^A-Z0-9a-z\w ]/u", '', $l);

工作开关UTF-8,只允许A-Z A-Z 0-9łwóc。。。等

那么所有这些都会产生100,对吗?
1abc00
会发生什么情况?更好的是-1.00呢?这也为Boltclock的示例提供了
100
。您需要+否则它将只替换第一个非数字no,这对于
preg\u match
部分正确,但对于
preg\u replace
则不正确。就像任何普通的替换一样,
preg\u replace
[^0-9]
中出现的每个字符都替换为零,然后用下一个字符继续搜索。@Patrick-如果是这种情况,它将在
acb100def
上失败-解决方案是
/g
标志。JavaScript是这样,但PHP不是这样。出于好奇,为什么不使用
\D
?网络上的许多答案都使用非数字而不是内置的“非数字”@nicorellius我在回答时写得很快,所以我并不真的认为使用它就是一切,并且从那时起就没有想过编辑它以使用\d。虽然它对于不熟悉不同正则表达式选项的人来说更具可读性。请注意\D与[^\D]相同
$l = preg_replace("/[^A-Z0-9a-z\w ]/u", '', $l);