在php中获取字符串的中间位置

时间:2016-01-21 06:33:15

标签: php string

我有这样的字符串

Ameerpet,|Jeans Corner: 040-50607090@05:45PM/6

希望在@之后和/之前获取子字符串。 试过以下

echo substr($str,strpos($str,'@')+1,strpos($str,'/'))

但我会在@

之后得到整个字符串

输出05:45PM/6

5 个答案:

答案 0 :(得分:2)

您可以使用preg_match

$match = preg_match('~@\K[^/]*(?=/)~', $str);

DEMO

答案 1 :(得分:1)

试试这个,

    echo substr($str,
                strpos($str,'@')+1,
                strpos($str,'/') - strpos($str,'@') - 1);

第三个参数不是<位置> ,它的<长度>

请参阅:http://php.net/manual/en/function.substr.php

答案 2 :(得分:0)

substr的语法不是substr(str , start ,end)

正确的语法是string substr ( string $string , int $start [, int $length ] ) 这就是为什么要打印整个东西来实现解决方案的原因,您可以使用@Avinash Raj提供的解决方案。但是,您试图获得长度为7的时间,然后您可以以这种方式使用语法

echo substr($str,strpos($str,'@')+1,7)

由于

答案 3 :(得分:0)

试试这段代码:

$data = "Ameerpet,|Jeans Corner: 040-50607090@05:45PM/6";    
$first = substr($data, strpos($data, "@") + 1);    
$splitter = "/";
$pieces = explode($splitter, $first );
echo $pieces[0];

答案 4 :(得分:0)

您可以使用substr

进行此操作
$yourString="Ameerpet,|Jeans Corner: 040-50607090@05:45PM/6";
$valueAfterSpecialChar = substr($yourString, strpos($yourString, "@") + 1); 
echo $desiredOutput= substr($valueAfterSpecialChar, 0, strpos($valueAfterSpecialChar, "/"));