PHP-强制不忽略preg_match_all中的相同值

PHP-强制不忽略preg_match_all中的相同值,php,preg-match-all,Php,Preg Match All,我发现preg\u match\u all函数有一个问题,默认情况下它会自动忽略相同的值 代码: 我应该添加或更改哪个标志或参数以获得上述输出? 提前谢谢 编辑 当然,我在$data变量中不仅仅有这些HTML标记,还有一些其他的和文本。试试这个: $data = '<img src="images/smiles/lol.gif" alt="Laughing" border="0"> <img src="images/smiles/lol.gif" alt="Laughing"

我发现
preg\u match\u all
函数有一个问题,默认情况下它会自动忽略相同的值

代码:

我应该添加或更改哪个标志或参数以获得上述输出? 提前谢谢

编辑 当然,我在
$data
变量中不仅仅有这些HTML标记,还有一些其他的和文本。

试试这个:

$data = '<img src="images/smiles/lol.gif" alt="Laughing" border="0">  <img src="images/smiles/lol.gif" alt="Laughing" border="0">  <img src="images/smiles/lol.gif" alt="Laughing" border="0">';
preg_match_all('#<img[^>]+src\\s*=\\s*[\'"]images/smiles/([^\'"]+)[\'"][^>]*>#i', $data, $out);
var_dump($out);
$data='';
preg#u match_all(“#]*>#i”、$data、$out);
var_dump($out);
输出为:

array
  0 => 
    array
      0 => string '<img src="images/smiles/lol.gif" alt="Laughing" border="0">' (length=59)
      1 => string '<img src="images/smiles/lol.gif" alt="Laughing" border="0">' (length=59)
      2 => string '<img src="images/smiles/lol.gif" alt="Laughing" border="0">' (length=59)
  1 => 
    array
      0 => string 'lol.gif' (length=7)
      1 => string 'lol.gif' (length=7)
      2 => string 'lol.gif' (length=7)
数组
0 => 
排列
0=>字符串“”(长度=59)
1=>字符串“”(长度=59)
2=>字符串“”(长度=59)
1 => 
排列
0=>字符串'lol.gif'(长度=7)
1=>字符串'lol.gif'(长度=7)
2=>字符串'lol.gif'(长度=7)

你有没有想过把责任推到你的正则表达式上,而不是preg\u match\u all上?您的匹配模式太贪婪/没有上下文约束。
Array
(
    [0] => Array
        (
            [0] => <img src="images/smiles/lol.gif" alt="Laughing" border="0">
            [1] => <img src="images/smiles/lol.gif" alt="Laughing" border="0">
            [2] => <img src="images/smiles/lol.gif" alt="Laughing" border="0">
        )

    [1] => Array
        (
            [0] => lol.gif
            [1] => lol.gif
            [2] => lol.gif
        )

)
$data = '<img src="images/smiles/lol.gif" alt="Laughing" border="0">  <img src="images/smiles/lol.gif" alt="Laughing" border="0">  <img src="images/smiles/lol.gif" alt="Laughing" border="0">';
preg_match_all('#<img[^>]+src\\s*=\\s*[\'"]images/smiles/([^\'"]+)[\'"][^>]*>#i', $data, $out);
var_dump($out);
array
  0 => 
    array
      0 => string '<img src="images/smiles/lol.gif" alt="Laughing" border="0">' (length=59)
      1 => string '<img src="images/smiles/lol.gif" alt="Laughing" border="0">' (length=59)
      2 => string '<img src="images/smiles/lol.gif" alt="Laughing" border="0">' (length=59)
  1 => 
    array
      0 => string 'lol.gif' (length=7)
      1 => string 'lol.gif' (length=7)
      2 => string 'lol.gif' (length=7)