L'avevo capito, ma quelli che ti forniamo qui sono sempre dei codici di esempio: li devi adattare alle tue esigenze. Se vuoi qualcosa di più specifico, questo è il lavoro che dovresti fare:Solo che mentre questo script contiene i titoli in un array, io vorrei che l'id passato con [libro=3] determini l'esecuzione di una query su db.
codice:$text = "I miei libri preferiti sono:\n[libro=1] e [libro=201]"; if (preg_match_all('/\[libro=([0-9]+)\]/', $text, $ids)) { $ids = array_unique(array_filter($ids[1], function($id) { return intval($id); })); // qui la query, del tipo: // $query = 'SELECT nome, autore, copertina FROM books WHERE id IN('.implode(', ', $ids).')'; // in $result recupero tutti i risultati della query $text = preg_replace_callback('/\[libro=([0-9]+)\]/', function($book) use ($result) { $bookId = $book[1]; if (...) { // controllo se esiste in $result un libro che ha l'id $bookId. return "..."; // restituisco l'output modificato, utilizzando $result } // il libro non esiste, che faccio? lancio una eccezione? o lo gestisco silenziosamente? }, $text); } echo $text;

Rispondi quotando
