【问题标题】:Get text in quotes获取引号中的文本
【发布时间】:2012-01-27 23:17:39
【问题描述】:

是否有一些函数可以只获取变量引号内的文本?
就像:

$text = 'I am "pro"';
echo just_text_in_quotes($text);

我知道这个功能不存在.. 但我需要类似的东西。 我在想fnmatch("*",$text) 但是这不能回显那个文本,它只是为了检查。 你能帮我么? 谢谢。

【问题讨论】:

    标签: php text quotes


    【解决方案1】:

    此函数将返回引号之间的第一个匹配文本(可能是空字符串)。

    function just_text_in_quotes($str) {
       preg_match('/"(.*?)"/', $str, $matches);
       return isset($matches[1]) ? $matches[1] : FALSE;
    }
    

    您可以修改它以返回所有匹配项的数组,但在您的示例中,您在 echoing 其返回值的上下文中使用它。如果它返回一个数组,你将得到的只是Array

    您最好编写一个更通用的函数来处理多次出现和自定义分隔符。

    function get_delimited($str, $delimiter='"') {
        $escapedDelimiter = preg_quote($delimiter, '/');
        if (preg_match_all('/' . $escapedDelimiter . '(.*?)' . $escapedDelimiter . '/s', $str, $matches)) {
            return $matches[1];
        }
    }
    

    如果没有找到匹配项,这将返回 null

    【讨论】:

    • 谢谢,这正是我所需要的。好吧,我从来没有使用过正则表达式,但我的项目中似乎需要它......我会尽快接受它。
    【解决方案2】:

    preg_match 就是为此而生的

       preg_match('/"(.*?)"/', $str, $quoted_string);
       echo "<pre>"; print_r($quoted_string);
       //return array of all quoted words in $str
    

    【讨论】:

      【解决方案3】:

      这个正则表达式:

      "(\w*)"
      

      将为您提供帮助,您可以在此处看到:http://rubular.com/r/3kgH7NdtLm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-11
        • 2023-03-06
        • 1970-01-01
        相关资源
        最近更新 更多