Newsgroup: it.comp.www.php
Titolo: Rinominare cartella

 $nuovo_nome<br />";
								//******************************************************
								// Popolo la tabella degli articoli collegati al codice news
se vuoto
								$sql_news="SELECT news_dir FROM news WHERE news_dir = '".
$node."' ";
								$result_news = mysql_query($sql_news) or die("Errore: " .
print $sql_news );
								$riga_news=mysql_fetch_row($result_news);
								$news_cartella=$riga_news[0];
								if ( $news_cartella !== $node ){
									$sql = "INSERT INTO news (news_dir) VALUES ('".$node."')";
									mysql_query ($sql);
									echo "<strong>Inserito ".$node."</strong><br>";
								}
  	   						}
						}
Mi sono accorto che se mi mettono apostrofo oppure vocali accentate mi
da errore
come posso rinominare ( se è possibile ) le cartelle sostituendo i
vocavoli accentati con non accentati e apostrofo con spazio?


$da_rimuovere = array("'", 'à', 'ò', 'ù', 'ì', 'è', 'é');
$da_sostituire = array('-', 'a', 'o', 'u', 'i', 'e', 'e');
$nome_cartella = str_replace($da_rimuovere, $da_sostituire,
$nome_cartella_prima);
Se il numero di elementi che devi rimuovere/sostituire diventano
tanti, vai di preg_replace()

p.s: nel primo blocco, perchè crei prima il file con l'estensione in
maiuscolo e dopo la rinomini in minuscolo? non fai prima a crearlo
direttamente in minuscolo?
Il contenuto della variabile $node, se ti arriva da get/post, lo
sanitizzi vero?


Posto tutto il codice
<?php
	require_once('include/dbopen.php');
	include("include/resize.php");
	$DirPath="news";
	if($DirPath=="") {
		$DirPath='news';
	}
	if ( $handle=opendir($DirPath) ) {
    	while ( $node = readdir($handle) ) {
        	$nodebase = basename($node);
        	if ($nodebase!="." && $nodebase!="..") {
            	if(is_dir($DirPath.$node)) {
                	$nPath=$DirPath.$node."/news";
                	echo "-> -> -> <a href='dir.php?DirPath=$nPath'>
$node</a><br>";
            	} else {
					$dir_articolo = "news/".$node;
					$handle_art = opendir($dir_articolo);
					while (false !== ($file = readdir($handle_art))) {



								$news_cartella=$riga_news[0];


								}
  	   						}
						}
					}
					closedir($handle_art);
				}
        	}
    	}
	}
	closedir($handle);
?>
Lo script dovrebbe fare questo:
leggi tutte le cartelle
Leggi tutti i file all'interno
Se il file all'interno ha l'estensione .JPG in maiuscolo riscrivi il
file con estensione in minuscolo
dopodiche scrivi il nome della cartella nel DB
e poi dava errore....
ho scritto male e mi riscrive il file 2 volte?
Franco

Ah no aspetta davo per scontato che quel codice fosse eseguito
all'upload, invece lo sui su immagini già presenti sul server.
A questo punto però non capisco perchè crei l'handler del file
($fileHand = fopen($file_server, 'r'); ) per poi richiuderlo subito.


Era un errore non me ne ero accorto
una domanda....
questa funzione
function correggi_testo($testo)
{
	$testo_temporaneo=$testo;
	$testo_temporaneo=str_replace("’"," ",$testo_temporaneo);
	$testo_temporaneo=str_replace("‘"," ",$testo_temporaneo);
	$testo_temporaneo=str_replace("`"," ",$testo_temporaneo);
	$testo_temporaneo=str_replace("'"," ",$testo_temporaneo);
	$testo_temporaneo=utf8_decode($testo_temporaneo);
	$testo_temporaneo=mysql_escape_string($testo_temporaneo);
	return $testo_temporaneo;
}
dove la posizione nel ciclo in modo che mi rinomini le cartelle?
una cosa, prima mi rinomina le cartelle nel server e poi me le scrive
nel db
help me.....

 $nuovo_nome<br />";
  	   						}
						}
						$nome_cartella = str_replace($da_rimuovere, $da_sostituire,
$node);
						// try caratteri
						$mystring = $node ;
						$findme = array("'", "à", "ò", "ù", "ì", "è", "é");
						$da_sostituire = array('-', 'a', 'o', 'u', 'i', 'e', 'e');
						foreach($findme AS $try){
							$pos = strpos ($mystring, $try);
							if ($pos !== false) {
								echo "la stringa '$mystring' contiene $try<br>";
								$term = str_replace($try, " ", $mystring);
								rename($mystring,$term);
								$result=rename($mystring,$term );
            					if (!$result) print "ERRORE su rinomina $mystring ->
$term<br />";
							} else {
								//echo "la stringa '$mystring' non contiene '$findme' <br>";
							}
						}
						//******************************************************
						// Popolo la tabella degli articoli collegati al codice news se
vuoto
						$sql_news="SELECT news_dir FROM news WHERE news_dir = '".
$node."' ";
						$result_news = mysql_query($sql_news) or die("Errore: " . print
$sql_news );
						$riga_news=mysql_fetch_row($result_news);
						$news_cartella=$riga_news[0];
						if ( $news_cartella !== $node ){
							$sql = "INSERT INTO news (news_dir) VALUES ('".$node."')";
							mysql_query ($sql);
							echo "<strong>Inserito ".$node."</strong><br>";
						}
					}
					closedir($handle_art);
				}
        	}
    	}
	}
	closedir($handle);
Ho creato un foreach perche strpos non accetta l'array ma non riesco
dove cavolo ho sbagliato?