【发布时间】:2012-01-27 23:17:39
【问题描述】:
是否有一些函数可以只获取变量引号内的文本?
就像:
$text = 'I am "pro"';
echo just_text_in_quotes($text);
我知道这个功能不存在.. 但我需要类似的东西。
我在想fnmatch("*",$text)
但是这不能回显那个文本,它只是为了检查。
你能帮我么?
谢谢。
【问题讨论】:
是否有一些函数可以只获取变量引号内的文本?
就像:
$text = 'I am "pro"';
echo just_text_in_quotes($text);
我知道这个功能不存在.. 但我需要类似的东西。
我在想fnmatch("*",$text)
但是这不能回显那个文本,它只是为了检查。
你能帮我么?
谢谢。
【问题讨论】:
此函数将返回引号之间的第一个匹配文本(可能是空字符串)。
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。
【讨论】:
preg_match 就是为此而生的
preg_match('/"(.*?)"/', $str, $quoted_string);
echo "<pre>"; print_r($quoted_string);
//return array of all quoted words in $str
【讨论】:
【讨论】: