【问题标题】:How to grab number after a word or symbol in PHP?如何在PHP中的单词或符号后获取数字?
【发布时间】:2015-07-08 09:08:45
【问题描述】:

我想用 PHP 抓取一个文本,就像一个例子,有一个数据“苹果 = 10”,我想从看起来完全一样的数据中只抓取数字 .我的意思是,数字的位置将在“等于”之后。

我的问题是源中的数字可以是 2 或 3 个字符,或者换句话说,它是不固定的。

请帮我解决它们:)

【问题讨论】:

  • 尝试一些正则表达式:php.net/manual/en/function.preg-match.php
  • 你有更多的文字吗?还是只是“The apple=123”?
  • @RiggsFolly:我曾尝试使用 substr(),但我想抓取的数字是不稳定的,我被困在那里,这是我尝试过的。跨度>
  • @SidiaStudios 是的,我正在处理的数据实际上是这样的“Orange=10 | Apple=15 | Banana= 1”它正是我正在处理的数据而我面临的问题是这些数字可能是数百、数千或数十。

标签: php function numbers


【解决方案1】:
$string = "Apple=10 | Orange=3 | Banana=7";
$elements = explode("|", $string);
$values = array();
foreach($elements as $element)
{
    $element = trim($element);
    $val_array = explode("=", $element);
    $values[$val_array[0]] = $val_array[1];
}

var_dump($values);

输出:

array(3) { 
    ["Apple"]=> string(2) "10" 
    ["Orange"]=> string(1) "3" 
    ["Banana"]=> string(1) "7" 
}

希望这就是你的需要:)

【讨论】:

    【解决方案2】:

    嗯,php对int转换有点懒,所以12345blablabla可以转换成12345

    $value = intval(substr($str, strpos($str, '=') + 1));
    

    当然,这不是最干净的方法,但它很简单。如果你想要更干净的东西,你可以使用正则表达式:

    preg_match ('#=([0-9]+)#', $str, $matches);
    $value = intval($matches[1]) ;
    

    【讨论】:

      【解决方案3】:

      试试下面的代码:

      $givenString= "The apple=10";    
      $required_string = substr($givenString, strpos($givenString, "=") + 1);    
      echo "output = ".$required_string ; // output = 10
      

      使用strpos()函数,你可以找到字符串中子字符串第一次出现的位置substr()函数,返回字符串的一部分。

      【讨论】:

        猜你喜欢
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        • 2015-01-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多