【问题标题】:Get quantity in numeric or written form before a substring in php在php中的子字符串之前以数字或书面形式获取数量
【发布时间】:2014-02-17 01:43:04
【问题描述】:

我有一个大字符串$string,我试图在其中查看是否提到了某个项目“游戏”的数量。

例如:

$string = "...asdasda fdf **4 games** asdasd sad ...";

$string = "...asdasda fdf **nine games** asdasd sad ..."; 
//maximum is around 15 but till about 10 should be enough for now

$string = "...asdasda fdf asdasd sad **a game** asda ...";

“游戏”可能在$string 中出现多次。
如果“游戏”总是以单数形式出现(“游戏”而不是“游戏”),则数量为 1。

与任何一个“游戏”事件相关的数量应该与它将谈论相同数量的“游戏”相同,即使它可能并不总是提到数量,所以“游戏”之前的任何数量应该给出正确的数量。

我最好如何在 php.ini 中执行此操作。据我了解,任何预匹配或正则表达式都会有所帮助,但不是那么好。

我想也许先取这个词然后检查它的数字可能会使用带有子字符串str_pos 的正则表达式,然后是一个函数?

【问题讨论】:

    标签: php regex string preg-match substring


    【解决方案1】:

    您可以使用正则表达式:

    \w+(?=\sgames?)
    

    用于捕获以数字或字母给出的数量。

    如果需要,您可以编写一个函数将字符串数量转换为数字数量。

    Working example of the regex on regex101.com.

    【讨论】:

    • 很抱歉,您能否帮我解释一下。通过查看它,它找到了在文字游戏之前的单词(在文字游戏之前有一个空格)。这就是它的全部吗?它如何处理出现在字符串中的文字游戏的数量?然后我是否必须创建一个单独获取所有实例的函数,然后当它找到与“1”或“a”以外的数量匹配时,获取该数量并打破 - 否则假设数量是一个?跨度>
    • @Sortitout 是的,它就是这样做的。您可以捕获数字并轻松计算它们,但您需要使用函数将单词转换为数字。如果你谷歌它,你可能会在网上找到这样的功能。
    • 感谢这工作。虽然我获取数值的自定义函数有点罗嗦:P
    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2021-02-03
    • 2020-01-05
    • 2020-02-24
    相关资源
    最近更新 更多