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