正则表达式找到%PHP内的所有子串

时间:2016-07-29 04:59:22

标签: php regex

我想找到"%"中的所有子串。在一个字符串中,但我不明白为什么它只找到" 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);

1 个答案:

答案 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 %
   [^>]*
)>