Extragere text din baza de date mysql

Am un tabel posts_photos unde source contine doar locatia unei fotografii exemplu: photos/2021/04/demo_a827bcaf42d1b17f83cd35aa258d7b88.jpg
In posts_articles cover contine tot asa locatia unei fotografii
In posts_articles mai am si text unde se gaseste un text amestecat cu locatia unei fotografii sau mai multe (https://site.ro/content/uploads/photos/2021/04/demo_a827bcaf42d1b17f83cd35aa258d7b88.jpg, https://site.ro/content/uploads/photos/2021/04/demo_da8180cdff56df2392b3842ae7d305e4.png)

Exemplu:

<p>demo</p>
<p><img src="https://site.ro/content/uploads/photos/2021/04/demo_a827bcaf42d1b17f83cd35aa258d7b88.jpg" alt="" width="1024" height="872" /></p>

Eu selectez fotografiile asa:

	global $db;
	$query = $db->query("SELECT source FROM posts_photos UNION SELECT cover FROM posts_articles") or _error("SQL_ERROR_THROWEN");

	$database_files = [];
	while ($row = mysqli_fetch_assoc($query)) {
		$database_files[] = $row['source'];
	} 

	print_r($database_files);

Este posibil sa selectez si din text doar locatia fotografiilor si sa le afisez in acelasi array?

În mysql s-ar putea face ce vrei doar creând funcții, dar nu e o idee bună deloc. Deci, ia-ți gândul de la asta.

Ce ai tu nevoie acum este să parsezi conținutul, să-ți extragă locațiile imaginilor din acel text.

Tehnica bbcode te-ar putea ajuta. Atunci când inserezi imaginile în conținut le pui cam așa [img title="Hello"]locatie/imagine.jpg[/img] și apoi parsezi conținutul cu php

Codul de care ai nevoie diferă în funcție de ce tip de fișiere și atribute o să ai în acele bbcode-uri. Poți începe de aici: php parse bbcodes - Google zoeken

Codul de inserare a fotografiilor nu-l pot modifica. Scriptul ii voi adauga pe un site care are deja continut

Ok. Atunci nu-ți rămâne decât să parsezi conținutul cu riscul să intri (înlocuiești?) într-un cod pus de utilizator. Căci nu scrie nicăieri că <img src="https://site.ro/content/uploads/photos/2021/04/demo_a827bcaf42d1b17f83cd35aa258d7b88.jpg" alt="" width="1024" height="872" />` e pus de tine și nu de un utilizator. Cel puțin dacă am înțeles corect despre ce e vorba (postări ale utilizatorilor).

În fine. Dacă foloseai bbcode-uri, aș fi zis că ai o variantă folosind preg_match/preg_match_all, dar la cum arată conținutul, necoafat, va trebui să citești caracter cu caracter.

Ai mai putea folosi clasa DOMDocument din php: PHP: DOMDocument::loadHTML - Manual. Depinde de ce vrei să faci mai departe cu imaginile (cu tag-urile respective).