ciao, sinceramente io proverei un pò a rivedere l'organizzazione del database, se ti è concesso, in modo da semplificarti la vita...
forse però non ti è concesso... bisognerebbe saperne di + su come è formattato il testo del campo. Ho avuto questa idea, sono partito dal presupposto che tra un articolo e il titolo successivo ci siano sempre 3 "a capo"... spero ti possa servire.
Codice PHP:
$testo =
"Articolo 1
Questo è il primo articolo.
Lo Stato garantisce il diritto alla procreazione cosciente e responsabile, tranne la domenica che è festa.
L'interruzione volontaria della gravidanza, di cui alla presente legge, non è mezzo per il controllo delle nascite.
Lo Stato, le regioni e gli enti locali non si ritengono responsabili qualora il nascituro dovesse diventare juventino.
Articolo 2
Questo è il secondo articolo.
Il titolo del secondo articolo è distanziato dal precedente con tre \"a capo\" e noi capiamo che è un titolo grazie a questo.
I consultori familiari istituiti dalla legge 29 luglio 1975, n. 405, fermo restando quanto stabilito dalla stessa legge, assistono la donna in stato di gravidanza:
a ) informandola sui diritti a lei spettanti in base alla sua misura di reggiseno.
";
function boldiamo($testo)
{
// secondo me forse ha più senso riprogettare il db, però...
// qua dividiamo la stringa in parti. il separatore è il comando "a capo"
$testo = nl2br($testo);
$risultato = explode("
",$testo);
// la prima riga è sempre un titolo, la boldiamo
echo "[b]" . $risultato[0] . "[/b]
";
// ora creiamo un ciclo per formattare il resto del testo
// quando becco 3
consecutivi, la linea dopo sarà un titolo e la bolderò
$tot = count($risultato);
$trebr = 0;
for($i=1;$i<$tot;$i++)
{
if (trim(str_replace("
","",$risultato[$i])) != false)
{
if ($trebr == 3)
{
echo "
[b]" . $risultato[$i] . "[/b]
\n";
$trebr = 0;
}
else
{
echo $risultato[$i] . "
\n";
}
}
else
{
$trebr = $trebr + 1;
}
}
}
boldiamo($testo);