2010-03-23 35 views

回答

7

你可以做到這一點與正則表達式:

$string = 'test%HERE$glop'; 

$m = array(); 
if (preg_match('/%(.*?)\$/', $string, $m)) { 
    var_dump($m[1]); 
} 

會得到你:

string 'HERE' (length=4) 


夫婦的注意事項:

  • $的模式有可逃脫,因爲它有一個特殊的含義(字符串的結尾)
  • 要匹配的一切:.*
    • %$
    • 之間,但在非gready模式:.*?
  • 你想要的拍攝 - 因此圍繞着它的()
3

您可以使用正則表達式來獲取:

preg_match('/%([^$]*)\\$/', $str, $match) 

如果找到匹配,$match[0]將包含整場比賽和$match[1]%$之間的文本。

但你也可以使用基本字符串函數像strpos和搜索%後第一$

if (($start = strpos($str, '%')) !== false && ($end = strpos($str, '$', $start)) !== false) { 
    $match = substr($str, $start, $end-$start); 
} 
相關問題