Tu ne retournes pas du HTML à parser côté client de manière dégueulasse, mais du JSON ou du XML ou tout autre langage simplement parsable. Tu peux prendre exemple sur https://varii.space/ : quand tu l'appelles avec un header classique de navigateur, il te retourne du HTML. Quand tu appelles les mêmes pages avec le header client "Accept: application/json" ou "Accept: text/xml" (je ne suis plus sûr du mimetype), il te retourne du JSON contenant les données de la page. Cela peut facilement se faire sur Firefox avec le plugin "Modify Headers" (et "Modify Response Headers" est aussi pratique dans l'autre sens, pour changer les header HTTP de réponse et non de requête).
Après, il te suffit d'avoir des pages qui renvoient ce dont ton appli mobile a besoin (là, il te faudra peut-être rajouter des pages, plus ou moins générique). Iamanoc fonctionne avec la même archi: https://iamanoc.com/character/page?id=2 appelé avec "Accept: application/json" te retourne la page du personnage en JSON, et tu n'as plus qu'à l'intégrer à ton appli (ou à ton AJAX, ou autre).
Cf https://toile.reinom.com/prawd/#http-accept pour le détail technique (somme toute très simple en PHP)
Après, il te suffit d'avoir des pages qui renvoient ce dont ton appli mobile a besoin (là, il te faudra peut-être rajouter des pages, plus ou moins générique). Iamanoc fonctionne avec la même archi: https://iamanoc.com/character/page?id=2 appelé avec "Accept: application/json" te retourne la page du personnage en JSON, et tu n'as plus qu'à l'intégrer à ton appli (ou à ton AJAX, ou autre).
Cf https://toile.reinom.com/prawd/#http-accept pour le détail technique (somme toute très simple en PHP)