在这种情况下如何获取两个字符之间的字符串?

Posted

技术标签:

【中文标题】在这种情况下如何获取两个字符之间的字符串?【英文标题】:how to get the string between two character in this case? 【发布时间】:2014-09-09 02:03:06 【问题描述】:

我想得到“yes”“yes”之间的字符串

例如。

yes1231yesyes4567yes

输出:

1231,4567

如何在php中做到这一点? 是不是之间可能还有 1 个输出 '' 对吗?

【问题讨论】:

字符串之间总是数字吗? 可能是 9yes123yes12 并且我需要的只是在 yes 之间 【参考方案1】:

在这个特定示例中,您可以使用带有正则表达式的preg_match_all() 来捕获“是”和“是”之间的数字:

preg_match_all("/yes(\d+)yes/", $your_string, $output_array);

print_r($output_array[1]);

// Array
// (
//     [0] => 1231
//     [1] => 4567
// )

并实现您想要的输出:

echo implode(',', $output_array[1]); // 1231,4567

编辑: 侧面参考,如果您需要一个更宽松的匹配,它只会匹配字符串中的所有数字集,例如在您的评论9yes123yes12 中,使用正则表达式:(\d+),它将匹配912312

【讨论】:

\d+ 表示“匹配至少出现一次的任何数字(数字)”。 编辑[0-9]+一样 谢谢,如果我想得到字符串 "we123a" 的编号怎么样 preg_match_all("/we(\d+)a/", $your_string, $output_array); 是的。这完全取决于您的应用程序,但可能会有更好的解决方案。如果您想要的只是数字,只需使用/(\d+)/ 作为正则表达式,假设它们的任一侧(或字符串的开头或结尾)都有数字以外的任何内容。 preg_match_all()* - 你一定是做错了什么:phpliveregex.com/p/61P 哦,是的~我用“/a”代替了“a/”......对不起,我浪费了你的时间。还有一件事我想知道为什么数组 [0] 是 we123a 而不是 123【参考方案2】:

晚上好,

如果您指的是提取数字(如您的示例所示),那么您可以通过引用 Christopher 的回答来实现这一点,他回答了关于该主题的一个非常相似的问题:

PHP code to remove everything but numbers

但是,另一方面,如果您希望从字符串中提取单词“yes”的所有实例,我建议使用 PHP 提供的 str_replace 方法。

这是一个可以帮助您入门的示例;

str_replace("yes", "", "yes I do like cream on my eggs");

我相信这些信息是有用的。

【讨论】:

以上是关于在这种情况下如何获取两个字符之间的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中获取字符串的前 2 个字母?

如何在Java中获取两个数字之间的字符串? [复制]

如何在 PHP 中获取两个字符串之间的子字符串?

如何在 C# 中获取两个字符串数组之间的差异?

如何在jQuery中的两个字符串之间获取url的特定部分[重复]

如何在特定子字符串之后获取字符串?