我需要在字符串中找到隨機字符串。獲取字符串中的隨機字符串
我的字符串看起來如下
{主題}粉{/主題}或{主題}紅{/主題}
我需要獲得標籤之間的文本,該文本可能以後每次不同刷新。
我的代碼如下
$str = '{theme}pink{/theme}';
preg_match('/{theme}*{\/theme}/',$str,$matches);
但是這個沒有運氣。
我需要在字符串中找到隨機字符串。獲取字符串中的隨機字符串
我的字符串看起來如下
{主題}粉{/主題}或{主題}紅{/主題}
我需要獲得標籤之間的文本,該文本可能以後每次不同刷新。
我的代碼如下
$str = '{theme}pink{/theme}';
preg_match('/{theme}*{\/theme}/',$str,$matches);
但是這個沒有運氣。
$matches = array();
$str = '{theme}pink{/theme}';
preg_match('/{([^}]+)}([^{]+){\/([^}]+)}/', $str, $matches);
var_dump($matches);
這會轉儲出您可能正在尋找的所有「標籤」的所有匹配項。試試看,並看看$matches
,你會明白我的意思。我假設你正在嘗試構建你自己的基本模板語言,所以這段代碼可能對你有用。如果你是,我可能會建議看像Smarty。
在任何情況下,您都需要圓括號來捕獲正則表達式中的值。有上述三個捕獲的值:
([^}]+)
將捕獲開口「標籤」,這是theme
的值。該[^}]+
的意思是「一個或多個任意字符,但}
字符,這使得這個非貪婪默認。
([^{]+)
將捕獲標籤之間的值。在這種情況下,我們要匹配所有的字符,但{
字符。
([^}]+)
將捕獲和關閉標籤的價值。
preg_match('/{theme}([^{]*){\/theme}/',$str,$matches);
[^{]
任何字符匹配除了左括號,使正則非貪婪,這是很重要的,如果你有每串超過一個標籤/線
*只量詞,你需要指定量詞的用途。你已經將它應用於},這意味着可以有0個或更多的'}'字符。你可能想要「任何角色」,用點表示。
也許你想只捕捉與{..}標籤之間的部分(。*)
$str = '{theme}pink{/theme}'; preg_match('/{theme}(.*){\/theme}/',$str,$matches); var_dump($matches);
'/{theme}(.*?){\/theme}/'
或更嚴格'/{theme}(\w*){\/theme}/'
應該做的工作
preg_match_all('/{theme}(.*?){\/theme}/', $str, $matches);
您應該使用在這裏匹配不合格。 $matches[1]
將包含所有匹配標籤的內容作爲數組。
} *零次或多次匹配的梅開二度......你可能想嘗試像}。* { –
試過了,和它返回{主題}粉色{/主題},我現在需要獲取粉紅色的值 – Roland