我需要在查询后从记录中获取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。您可能希望改用它。