如何从PHP中的字符串中提取子字符串,直到达到某个字符?

时间:2011-01-12 21:08:26

标签: php substring

我有一个PHP应用程序的一部分,用于评估用户输入的长字符串,并提取一个总是在用户提供的字符串中开始20个字符的数字。

唯一的问题是我不知道每个用户的数量会有多长,我所知道的是数字的结尾总是后跟双引号(“)。

如何使用PHP子字符串函数从特定点开始提取子字符串,并在命中双引号时结束?

提前致谢。

5 个答案:

答案 0 :(得分:11)

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

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

然后可以使用该位置来获取子字符串:

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

第三个参数的计算是必要的,因为substr期望子串的长度而不是结束位置。另请注意,如果在 haystack 中找不到 needle ,则substr会返回false

答案 1 :(得分:1)

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

答案 2 :(得分:0)

<?

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

?>

或类似的东西等。

答案 3 :(得分:0)

在20个字符之后找到第一次出现双引号,减去19 - 它给出了所需子字符串的长度:

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

答案 4 :(得分:0)

如果您需要有关子字符串函数的帮助,请继续添加Gumbo的答案:

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