Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ad-inserter domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/blog.webeats.it/httpdocs/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the cookie-law-info domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/blog.webeats.it/httpdocs/wp-includes/functions.php on line 6114
PHP tips: rimuovere BR (line break) eccetto uno per linea

Rimuovere BR (line break) eccetto uno per linea con PHP o con Smarty grazie alle regular expressions

Con le espressioni regolari è possibile manipolare un testo preformattato per adattarlo alle nostre necessità. Vediamo qualche esempio in PHP o Smarty (per piattaforme come PrestaShop)

Immaginiamo di avere un testo formattato in questo modo

Testo di prova\n
Altro testo di prova\n
\n\n
Ancora un testo di prova\n

Con PHP, usando un nl2br($miastringa) ci ritroveremo qualcosa formattato in questo modo

Testo di prova<br />
Altro testo di prova<br />
<br />
<br />
Ancora un testo di prova<br />

Gli spazi tra la seconda e la terza linea potrebbero essere troppi, quindi con le espressioni regolari possiamo ovviare a questo problema. Sempre con PHP potremo fare qualcosa del tipo:

$miastringa = nl2br($miastringa);
$miastringa = preg_replace('#<br />(\s*<br />)+#', '<br />', $miastringa);

Nel caso stiate usando PrestaShop, e quindi dovete fare questa modifica direttamente nel tema, vi troverete a dover lavorare con Smarty. Il procedimento è simile, cambia leggermente la sintassi:

{$miastringa|nl2br|regex_replace:"#<br />(\s*<br />)+#":"<br />"}

oppure

{$miastringa|regex_replace:"/[\n]/":"<br />"|regex_replace:"#<br />(\s*<br />)+#":"<br />"}

In entrambi i casi il risultato sarà il seguente:

Testo di prova<br />
Altro testo di prova<br />
Ancora un testo di prova<br />