試試這個:
$string = 'Writing to tell you that var MyCode = "dentline"; Learn it.';
$matches = array();
preg_match('/var MyCode = "(.*?)";/', $string, $matches);
echo $matches[1];
結果:
dentline
ideone
說明
var MyCode = " Match this string literally and exactly
( Start a capturing group.
.*? Match any characters, as few as possible (not greedy)
) End the capturing group.
"; Match the closing double quote followed by a semi-colon
的捕獲組「捕獲」匹配的內容並將其存儲在數組$matches
中,以便之後可以訪問它。
關於這些構造的更多信息可以在這裏找到:
變化
如果 「mycode的」 可以改變,然後用這個來代替:
preg_match('/var \w+ = "(.*?)";/', $string, $matches);
在這個表達式中\w
表示「匹配任何字符」。您可能還想使用\s+
而不是空格,以便您可以匹配一個或多個任何空格字符(也是製表符和換行符)。同樣,\s*
匹配零個或多個空格。所以你嘗試的另一種可能性是:
preg_match('/var\s+\w+\s*=\s*"(.*?)"\s*;/', $string, $matches);
請問你的字符串總是被雙引號,而不是單引號?你的字符串是否包含轉義引號?代碼中的空格是否有意義?變量名稱始終是「MyCode」還是可以是其他名稱? – 2010-10-04 22:47:16
字符串總是用雙引號。沒有轉義字符,沒有空格,沒有變量名稱。就像一樣。 – 2010-10-04 23:48:08