从数组查询结果 PHP 获取 img src


GET img src from array query results PHP

我需要在查询后从记录中获取img src:

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
  $rows[] = array(
     'id' => $row['ID_CONTENT'],
     'titolo' => $row['TITOLO'],
     'articolo' => $row['DESCRIZIONE'],
     'giorno' => $row['GIORNO'],
     'foto' => "get img src from this: $row['DESCRIZIONE']",
     'fonte' => $row['FONTE']
);}

可能吗?我尝试使用preg_match_all('/<img[^>]+>/i',$row['DESCRIZIONE'],$res[0])但结果只得到 1 分!

好的,我解决了:

创建一个函数:

function srcImg($num) {
            preg_match('@src="([^"]+)"@',$num,$match);
            $src = array_pop($match);
            return $src;
         }

然后:

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
  $rows[] = array(
     'id' => $row['ID_CONTENT'],
     'titolo' => $row['TITOLO'],
     'articolo' => $row['DESCRIZIONE'],
     'giorno' => $row['GIORNO'],
     'foto' => srcImg($row['DESCRIZIONE']),
     'fonte' => $row['FONTE']
);}
echo json_encode($rows);

我强烈推荐 @Javier Núñez 的建议,并使用 HTML 解析器作为正则表达式无法涵盖所有可能性。但是,如果由于任何原因你不能,那么你可以尝试使用此正则表达式:(未经测试)

src=['"]([^"]+)['"]

您可以在preg_match中使用它,如下所示:

preg_match( '@src=['"]([^"]+)['"]@', $row['DESCRIZIONE'], $match);
$src = array_pop($match);

如果你需要一个黑客的方法,你可以修补它。我们都明白让一些东西在一个更完美的解决方案上工作的紧迫性。;)

如果您想尝试使其更健壮,您可以使用 http://regexr.com/来测试您的正则表达式。

编辑:我没有使用preg_match_all。您可能希望改用它。