PHP:如何从前两次出现的字符中获取字符串

时间:2012-03-08 19:14:46

标签: php

所以我想说我有以下代码:

$var = '-77-randomtext-moretext.extension'

除了连字符( - )和扩展名外,变量中没有任何东西是固定的。

然后让我们说我需要将'-77-'部分作为一个字符串。 '-77-'表示前两个连字符之间的任何内容,包括连字符本身。

我怎么能这样做?

5 个答案:

答案 0 :(得分:3)

执行此操作的两种主要方法可能是explodepreg_filter

分割:

$varArray = explode( '-', $var );
$string77 = '-' . $varArray[1] . '-'; // equals '-77-'

preg_filter;

$string77 = preg_filter( '/^(-.+-).*$/', '$1', $varArray ); // equals '-77-', or NULL if the string doesn't match

split方法更快,但不太可靠。 preg_filter将确保您始终获得所需的数据,如果不存在,则为NULL,但需要更多处理。

答案 1 :(得分:1)

您可以使用:

$parts = explode('-', $var);
$txt = '-' . $parts[1] . '-';

答案 2 :(得分:1)

使用两个strpos()个来电之间的距离,根据这些位置获取substr()

$var = '-77-randomtext-moretext.extension';
$first_pos = strpos($var,'-');

$second_pos = strpos($var,'-',($first_pos+1)); //we offset so we find the second 
$length = ($second_pos+1) - $first_pos; //get the length of the string between these points
echo  substr($var,$first_pos,$length); 

您也可以使用正则表达式(preg_match())或使用explode()方法:

$pieces = explode('-',$var);
$results = '-'.$pieces[0].'-';

但这只有在您知道第一个和第二个分隔符相同时才有效。

答案 3 :(得分:1)

您可以使用正则表达式:/-(.+?)-/

答案 4 :(得分:1)

$var = '-77-randomtext-moretext.extension';
preg_match('/-(.+?)-/', $var, $matches);
echo $matches[0]; // -77-