我在段落中多次跟踪字符串,我想在页面上显示
START_num_360_250_END
此处num
可以是任意数字的任何数字,此字符串可以是段落中的任何位置,也可以是任意次数。并且num
可以在该字符串中重复(即重复的字符串)。我希望这些字符串一次一个。
我正在关注。
for($i=1;$i<=$file_count;$i++){
preg_match( '/START_'.$i.'(.*)_END/', $p_info['blog_content'], $match);
print_r($match);
}
例如。如果我在我的段落中有两次该字符串,如下所示
START_1_360_250_END
START_2_360_250_END
我应该在START_1_360_250_END
中获得for loop
第一次迭代(因为num
这里是1),即使该字符串出现任何次数,我也应该只获得一次。而START_2_360_250_END
作为num
进行第二次迭代,2
。
但这就是我得到的。
Array (
[0] => START_1_360_250_END<p><br></p><p>START_2_360_250_END
[1] => _360_250_END<p><br></p><p>START_2_360_250
)
Array ( [0] => START_2_360_250_END [1] => _360_250 )
Array ( )
Array ( )
Array ( )
Array ( )
Array ( )
Array ( )
Array ( )
答案 0 :(得分:0)
您正在使用贪婪的匹配(.*
),该匹配将始终尝试匹配尽可能多的字符(导致匹配显示两个条目)。
让它成为非贪婪的匹配(.*?
)。这将尝试匹配尽可能少的字符。
如果您想使其更加强大,请将.
替换为更具体的类\w
,这类将匹配字母数字字符以及_
(其中应该适合你的情况。)