2011-01-12 67 views
6

我有一个PHP应用程序的一部分,用于评估用户输入的长字符串,并提取一个始终在用户提供的字符串中输入20个字符的数字。如何从PHP中的字符串中提取子字符串,直到它达到某个字符?

唯一的问题是,我不知道每个用户的数量多长时间会的,我所知道的是数量的结束总是跟着一个双引号(“)。

如何我可以使用PHP字符串函数提取一个子开始形成一个特定的点,并结束当它击中一个双引号?

在此先感谢。

回答

11

您可以使用strpos获得的"从第一位置位置20:

$pos = strpos($str, '"', 20); 

即位置随后可用于获取子:

if ($pos !== false) { 
    // " found after position 20 
    $substr = substr($str, 20, $pos-20-1); 
} 

第三参数的计算是必要的,因为substr预计串的长度,而不是结束位置。还请注意substr返回false如果不能在干草堆中找到。

+0

美丽的+1 .. – 2011-01-12 21:17:45

0
<? 

$str = substring($input, 20, strpos($input, '"') - 20); 
echo $str; 

?> 

或者类似的东西等

1
$nLast = strpos($userString , '"'); 
substr($userString, 0, $nLast); 
0

发现后的20个字符双引号的第一次出现,19。减去 - ,为您提供所需的子字符串的长度:

$dq = strpos($string,'"',19); //19 is index of 20th char 
$desired_string = substr($string,19,$dq-19); 
0

去只需加上Gumbo的答案,以防您需要子字符串功能帮助:

$pos = strpos($str, '"', 20); 
$substring = substr($str, 20, $pos); 
相关问题