我想找到"%"中的所有子串。在一个字符串中,但我不明白为什么它只找到" id"。
$test = '<img src="%get_love%" alt="%f_id%" title="%id%" />';
$token_regex_inside_tags = "/<([^>]*%([\w]+)%[^>]*)>/";
preg_match_all($token_regex_inside_tags, $test, $matches);
答案 0 :(得分:4)
假设: - 我假设您需要在%
内查找内容<>
。
您可以使用此正则表达式使用 \G
(?:\G(?!\A)|<)[^%>]*%([^%>]*)%
<强> Regex Demo 强>
正则表达式细分
(?:
\G(?!\A) #End of previous match
| #Alternation
< #Match < literally
)
[^%>]* #Find anything that's not % or >
%([^%>]*)% #Find the content within %
在你的正则表达式
< #Matches < literally
(
[^>]* #Moves till > is found. Here its in end
%([\w]+)% #This part backtracks from last but is just able to find only the last content within two %
[^>]*
)>