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

时间:2016-01-29 10:41:47

标签: php regex

我需要在查询后从记录中获取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);

1 个答案:

答案 0 :(得分:0)

我强烈推荐@JavierNúñez建议的内容,并使用HTML Parser作为正则表达式,但不能涵盖所有可能性。但是,如果由于任何原因你不能,那么你可以尝试使用这个正则表达式:(未经测试)

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

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

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

如果你需要一个hacky方法,你可以修补它。我们都理解在更完美的解决方案上努力工作的紧迫性。 ;)

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

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