2011-12-26 18 views
2

是否有一些函數可以從變量中引用文本內的文本?
就像:獲取引用文本

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

我知道這個功能不存在..但我需要類似的東西。 我正在考慮fnmatch("*",$text) 但是這不能迴應只是文本,它只是爲了檢查。 你能幫我嗎? 謝謝。

回答

6

該函數將返回引號之間的第一個匹配文本(可能是一個空字符串)。

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

您可以修改它返回所有匹配的陣列,但在你的例子中,你使用它的echo荷蘭國際集團其返回值的範圍內。如果它返回一個數組,你會得到的是Array

你可能最好寫一個更通用的函數來處理多個事件和一個自定義分隔符。

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

如果未找到任何匹配項,將返回null

+0

謝謝,這是我需要什麼。 那麼,我從來沒有使用正則表達式,但似乎我會需要它很多在我的項目... 我會盡快接受它。 – 2011-12-26 12:22:59

2

preg_match爲這個

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