如何从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 中找不到 needlesubstr 将返回 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中的字符串中提取子字符串直到它到达某个字符?的主要内容,如果未能解决你的问题,请参考以下文章

从字符串中提取子字符串

PHP 一个字符串,如何提取其中相同的字符?

如何使用 PostgreSql 中的子字符串函数从字符串中提取单词

String 类中的子字符串方法到达它不应该的索引 [重复]

如何从 C++ 中的 getline 函数中提取特定的子字符串?

在python中,如何通过匹配原始列表中的字符串模式从字符串列表中提取子列表