从字符串中获取特定的字符 - PHP

时间:2014-02-09 22:23:29

标签: php

我正在看几个函数,要么在两个字符串之间得到字符串,要么在特定字符之间取消字符串,但我在这里遇到困境所以请帮助我。

字符串是

You are currently using plugin version 8.0.3 Stable - 11-08-2013

因为有几个插件可以使用,版本和日期可能会改变。 我需要的只是从这个字符串返回8.0.3,但我永远不知道它是8.0.2还是8.0.25。或者10.5.33。

因此,而不是猜测案例,单词的顺序,爆炸字符串,空格或在版本之前和稳定之后看

我宁愿拥有的是: 获取第一个点之前和之后的数字,并返回带点的字符串。

注意:我不想在版本和稳定之间进行搜索,已经有了,他们的订单可能会被撤销,因此我要求与DOTS匹配 任何帮助表示赞赏。

5 个答案:

答案 0 :(得分:1)

这应该有效:

$str = 'You are currently using plugin version 8.0.3 Stable - 11-08-2013';

$start = strpos($str, '.')-1;
$end = strrpos($str, '.')+2;
$version = substr($str, $start, $end - $start);

答案 1 :(得分:1)

你应该在这里使用正则表达式

$str = 'You are currently using plugin version 8.0.3 Stable - 11-08-2013';
preg_match('/(\d+\.\d+\.\d+)/',$str, $match);

$match[1]将包含8.0.3,并且仍适用于10.25.2432154.0.165741354

答案 2 :(得分:0)

您可以使用正则表达式来匹配您需要的内容。

$str = 'You are currently using plugin version 8.0.3 Stable - 11-08-2013';
preg_match('/version (.*?) Stable/',$str, $match);
echo $match[1];

答案 3 :(得分:0)

您可以使用正则表达式从该字符串中获取版本号:

$str = 'You are currently using plugin version 8.0.3 Stable - 11-08-2013';
preg_match('/[0-9\.]+/',$str, $match);
echo $match[1];
$ match [1]是8.0.3

答案 4 :(得分:-1)

function findit( $mytext , $starttag , $endtag ) 
          {

              $posLeft = stripos( $mytext , $starttag )+strlen( $starttag );
              $posRight = stripos( $mytext , $endtag , $posLeft+1);
              return substr( $mytext , $posLeft , $posRight-$posLeft );

          }

第一个参数是文本var,第二个是开始文本,第三个是结束文本

  • 从$ mytext
  • 获取$ starttag和$ endtag之间的文本