我有一个PHP应用程序的一部分,用于评估用户输入的长字符串,并提取一个总是在用户提供的字符串中开始20个字符的数字。
唯一的问题是我不知道每个用户的数量会有多长,我所知道的是数字的结尾总是后跟双引号(“)。
如何使用PHP子字符串函数从特定点开始提取子字符串,并在命中双引号时结束?
提前致谢。
答案 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);