strpos()似乎没有识别我正在使用的字符串

时间:2013-06-10 23:32:47

标签: php strpos

我有以下字符串:

CAE33D8E804334D5B490EA273F36830A9849ACDF|xx|yy|46|13896|9550

在下面的代码中对应$track_matches[0][0]

唯一的恒定长度字段是第一个(CAE33D8E804334D5B490EA273F36830A9849ACDF),长度为40个字符。我正在尝试获取值xxyy,这些值是未知的长度和值以及列的其余部分。

所以我正在尝试这样的事情:

 $seperator= '|';
 $end_seed= strpos($track_matches[0][0], $seperator, 41 );
 $seeders[$i] =  substr($track_matches[0][0], 41, $end_seed - 41);
 $end_leech= strpos($track_matches[0][0], $seperator, $end_seed +1 );
 echo "end_seed" . $end_seed . " end_leach: " . $end_leech;
 $leechers[$i] =  substr($track_matches[0][0], $end_seed +1, $end_leech - $end_seed - 1);

我遇到的问题是,$end_leech=行似乎无法正常工作(并且无法识别$seperator)并重新整行($track_matches[0][0]),因为它是echo'时的值,而$ end_seed返回正确的值。 ......那么为什么会发生这种情况呢?我怎么解决它?

2 个答案:

答案 0 :(得分:1)

尝试:

$temp = explode("|", $track_matches[0][0]);

这将返回一个数组,然后您可以将变量引用为$temp[1](xx)和$temp[2](yy)

答案 1 :(得分:0)

尝试:

$myString="CAE33D8E804334D5B490EA273F36830A9849ACDF|xx|yy|46|13896|9550";
$splitString=explode('|',$myString);
$xx=$splitString[1];
$yy=$splitString[2];

当然你可以用strpos,substr等手动复制,但需要付出更多努力