preg_replace替换属性中为null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了preg_replace替换属性中为null相关的知识,希望对你有一定的参考价值。

我建了一个谷歌货币转换器,但我不明白这部分代码

$converted_amount = preg_replace("/[^0-9.]/", null, $get[0]);

这个模式的工作是什么,null是什么意思?

完整代码:

$amount = urlencode($_POST['amount']);
            $from_Currency = urlencode($_POST['from']);
            $to_Currency = urlencode($_POST['to']);
            $get = file_get_contents("https://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency");
            $get = explode("<span class=bld>",$get);
            $get = explode("</span>",$get[1]);
            print_r($get);
            $converted_amount = preg_replace("/[^0-9.]/", null, $get[0]);
答案

虽然Nicolas Maltais所写的内容基本上是正确的,但有点不清楚。

  • [^0-9.] ...只匹配一个角色。 - 但是,preg_replace替换了所有匹配,因为没有指定限制,因此从字符串中删除所有其他字符。
  • null意味着用空字符串替换 - 但是,似乎没有在preg_replace手册中记录。经过相当多的搜索,我在字符串页面上找到了提示,部分是Converting to string: 字符串转换在需要字符串的表达式范围内自动完成。 ... NULL总是转换为空字符串。
另一答案

[^0-9.]表示任何字符,但数字0123456789.。这只会匹配一个字符。 null表示用空字符串替换,换句话说删除它。下次您可以在Google上进行简单搜索并找到相同的信息。

以上是关于preg_replace替换属性中为null的主要内容,如果未能解决你的问题,请参考以下文章

php preg_replace 帮助 iframe src

preg_replace 一次替换多个模式

PHP7 preg_replace出错及解决办法

当字符串包含单引号时 PHP preg_replace() 返回 null 但否则有效

php preg_replace遇到替换本身有括号的内容怎么办

preg_replace - 替换输出开始处返回的内容