如何从PHP中的字符串中提取子字符串直到它到达某个字符?
Posted
技术标签:
【中文标题】如何从PHP中的字符串中提取子字符串直到它到达某个字符?【英文标题】:How to extract a substring from a string in PHP until it reaches a certain character? 【发布时间】:2011-01-12 21:08:25 【问题描述】:我有一个 php 应用程序的一部分,它评估用户输入的长字符串,并在用户提供的字符串中提取一个总是以 20 个字符开头的数字。
唯一的问题是我不知道每个用户的号码会有多长,我只知道号码的末尾总是跟一个双引号 (")。
如何使用 PHP 子字符串函数提取从特定点开始到双引号结束的子字符串?
提前致谢。
【问题讨论】:
【参考方案1】:您可以使用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
。
【讨论】:
【参考方案2】:$nLast = strpos($userString , '"');
substr($userString, 0, $nLast);
【讨论】:
【参考方案3】:<?
$str = substring($input, 20, strpos($input, '"') - 20);
echo $str;
?>
或者类似的东西。
【讨论】:
【参考方案4】:在 20 个字符后找到第一次出现的双引号,减去 19 - 这给了你想要的子字符串的长度:
$dq = strpos($string,'"',19); //19 is index of 20th char
$desired_string = substr($string,19,$dq-19);
【讨论】:
【参考方案5】:如果您需要子字符串函数的帮助,只需添加 Gumbo 的答案:
$pos = strpos($str, '"', 20);
$substring = substr($str, 20, $pos);
【讨论】:
以上是关于如何从PHP中的字符串中提取子字符串直到它到达某个字符?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PostgreSql 中的子字符串函数从字符串中提取单词
String 类中的子字符串方法到达它不应该的索引 [重复]