我有一個字符串,它看起來像這樣如何使用PHP在字符串中查找所有匹配的模式?
Hello, my name is "{{ @sql(SELECT TOP 1 name FROM table1 WHERE [id] = 5) }}" and my title is "{{ @sql(SELECT TOP 1 title FROM table1 WHERE [id] = 5) }}"
我需要能夠藉此串並分析出了以下模式{{ @sql(WHATEVER QUERY GOES HERE) }}
匹配任何模式,必須有兩個braken其次是可選的空間,然後@sql(
啓動在) }}
結束。此外,我還需要提取內部查詢這是@sql(
和) }}
這裏結束之間的文本是我做了什麼
$pattern = '/\{\{\s*[email protected]\((.+)\)+\s*+\}\}/i';
$matches = [];
preg_match ($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
echo '<pre>';
print_r($matches);
echo '</pre>';
我的模式適用於以下字符串
Hello "{{ @sql(SELECT TOP 1 name FROM table1 WHERE [id] = 5) }}"
但是當我需要的是使用模式不止一次在文中,似乎我的模式搜索的)}}
最後一次出現,而不是下一個發生。
如何更新我的模式,以便查找一個或多個匹配項?
謝謝
的[PHP預浸\ _match和預浸\ _match \ _all功能]可能的複製(http://stackoverflow.com/questions/4088836/php-preg-match-and-preg-匹配所有函數) – Devon
你有沒有注意到_None_你的示例字符串是這樣的''{{@sql(SELECT TOP 1 name FROM table1 WHERE [id] = 5}}「'將匹配正則表達式模板,比如'{ {@sql(WHATEVER QUERY GOES HERE)}}'? – sln
爲什麼使用所有格量詞'* +'? – sln