Salve a tutti,
sono nuovo e non molto esperto.
Sto passando da Xoops a Wordpress
Sto convertendo i dati e le vecchie tabelle in modo da essere compatibili con quelle wordpress.
Nella tabella wp_post c'è un campo post_name che con il vecchio CMS non avevo.
Il campo post_name non è alto che il titolo semplificato da usare con url rewriting. In pratica se il post ha il titolo "Ecco come farò a ..." il campo post name deve essere qualcosa tipo "ecco-come-faro-a".

Ho fatto una funzioncina per convertire il post_tite in post_name. La funzione è la seguente.

Codice PHP:
<?php

function generaTitoloSanato($titolo='') {
       
    
$titolo strtolower($titolo);
    
    
$zio = array(
    
'Ì',
    
'Í',
    
'ß',
    
'ö',
    
'Ö',
    
' '
    
'('
    
')'
    
'%'
    
'+'
    
'&'
    
'.'
    
','
    
':'
    
'/'
    
'?'
    
'’'
    
'"'
    
'“'
    
'”'
    
'–'
    
'À'
    
'È'
    
'É'
    
'Ù'
    
'Ú'
    
"'"
    
'"',
    
'ì',
    
'í',
    
'è',
    
'é',
    
'à',
    
'ù',
    
"'",
    
'"',
    
'!',
    
'#039;',
    
'&amp;',
    
'Ä',
    
'ä',
    
'ü',
    
'Ü',
    
'ò',
    
'ó',
    
'Ò',
    
'Ó',
    
'Á',
    
'á');

    
$ziosanato = array(
    
'i',
    
'i',
    
'ss',
    
'oe',
    
'oe',
    
'-'
    
''
    
''
    
'-'
    
''
    
'e'
    
''
    
'-'
    
'-'
    
'-'
    
'-'
    
'-'
    
''
    
''
    
''
    
'-'
    
'a'
    
'e'
    
'e'
    
'u'
    
'u'
    
'-'
    
'',
    
'i',
    
'i',
    
'e',
    
'e',
    
'a',
    
'u',
    
"",
    
'',
    
'',
    
'-',
    
'e',
    
'a',
    
'a',
    
'u',
    
'u',
    
'o',
    
'o',
    
'o',
    
'o',
    
'a',
    
'a');
    
    
$titolo str_replace($zio,$ziosanato,$titolo);
    
$titolo preg_replace('/[^a-zA-Z0-9_ \-()\/%-&]/s'''$titolo);
    
$ogre = array('----','---','--');
    
$akuma = array('-','-','-');
    
$titolo str_replace($ogre,$akuma,$titolo);
       
$titolo preg_replace('/-$/'''$titolo);
        if (
sizeof($titolo) > 0)
        {
            return 
$titolo;
        }
        else
            return 
'';
    }

?>

Sembra funzionare bene se la uso con dati che non vengono da MySql.

esempio se scrivo
Codice PHP:
$ciccio 'I segreti del caffè corretto'
echo  generaTitoloSanato($ciccio
viene
'i-segreti-del-caffe-corretto'

Invece ho un problema quando ho i dati che vengono da MySql e specificatamente con str_replace ma solo nei caratteri accentati.

Per compilare il campo quando è vuoto nella tabella wp_post ho fatto così:

Codice PHP:
$username "username";
$password "password";
$hostname "localhost"

//connection to the database
$dbhandle mysql_connect($hostname$username$password)
 or die(
"Impossibile Connettersi a MySql");
echo 
"Connesso a MySQL
"
;

//select a database to work with
$selected mysql_select_db("nomedatabase",$dbhandle)
  or die(
"Non riesco a trovare il DB");
  echo 
"Connesso al DB
"
;

$oldRows mysql_query("SELECT * FROM  wp_posts WHERE post_name = ''");
while(
$row mysql_Fetch_array($oldRows))
{
 
$host generaTitoloSanato($row['post_title']);
 
mysql_query("UPDATE wp_posts SET post_name='$host' WHERE ID='{$row['ID']}'");}
 
//close the connection
  
echo "Fatto
"
;
mysql_close($dbhandle); 
Funziona tutto ma per esempio quando ho i caratteri accentati nel titolo esempio: 'I segreti del caffè corretto' diventa 'i-segreti-del-caff-corretto'
e mi tronca tutti i caratteri speciali. Ho provato a togliere $titolo = preg_replace('/[^a-zA-Z0-9_ \-()\/%-&]/s', '', $titolo); dalla funzione ed ho visto che i caratteri accentati non sono sostituiti dallo str_replace (mentre ad esempio lo spazio vuoto e altri caratteri si). Non capisco come mai se uso invece la fuzione con dati che non arrivano da MySql fuziona benissimo.

Qualcuno sa aiutarmi...