Non riuscendo a risolvere ho scritto una parte della funzione escludendo l'ultima riga,
codice:
function normalize($var) {
	$var = trim($var);
	$patterns = array("\t", "’", "‘", "“", "”", "«", "»");
	$replacements = array("TAB", "APOS", "APOS", "QUOT", "QUOT", "QUOT", "QUOT");
	$var = str_replace($patterns, $replacements, $var);
	return $var;
}
per controllare il funzionamento.
Ho sostituito con lo script precedente e ha continuato a non funzionare...
Allora ho portato questo script su un altro file per controllarlo meglio e ho notato che invece funziona... quindi l'errore non deve essere nello str_replace ne tantomeno nella regular expression che prima funzionava.
Ho fatto così su un nuovo documento php:
codice:
<?php

function normalize($var) {
	$var = trim($var);
	$patterns = array("\t", "’", "‘", "“", "”", "«", "»");
	$replacements = array("TAB", "APOS", "APOS", "QUOT", "QUOT", "QUOT", "QUOT");
	$var = str_replace($patterns, $replacements, $var);
	return $var;
}

$passedvar = "‘ciao’	“ciriciao”	«ciriciriciao»";
$passedvar = normalize($passedvar);
print $passedvar;

print "


";

$passedvar = "function normalize(\$var) {
	\$var = trim(\$var);
	\$patterns = array(\"\t\", \"’\", \"‘\", \"“\", \"”\", \"«\", \"»\");
	\$replacements = array(\"TAB\", \"APOS\", \"APOS\", \"QUOT\", \"QUOT\", \"QUOT\", \"QUOT\");
	\$var = str_replace(\$patterns, \$replacements, \$var);
	return \$var;
}";
$passedvar = normalize($passedvar);
print $passedvar;

?>
e in output ho:
APOSciaoAPOSTABQUOTciriciaoQUOTTABQUOTciriciriciao QUOT


function normalize($var) { TAB$var = trim($var);
TAB$patterns = array("TAB", "APOS", "APOS", "QUOT", "QUOT",
"QUOT", "QUOT"); TAB$replacements = array("TAB", "APOS",
"APOS", "QUOT", "QUOT", "QUOT", "QUOT"); TAB$var =
str_replace($patterns, $replacements, $var); TABreturn $var; }
...come mi aspettavo.
Quindi funziona... ma mettendo lo stesso identico script nel mio file php che recupera in $_POST delle variabili invece non funziona...
da cosa può dipendere?
Come dicevo, le variabili le recupero in $_POST così:
Codice PHP:
$jmnome = isset($_POST['jmnome']) ? $jmnome "";
$jmcognome = isset($_POST['jmcognome']) ? $jmcognome ""
dopodicchè subito passo la funzione su tutte le variabili contenenti del testo scritto da un utente:
Codice PHP:
$jmnome normalize($jmnome);
$jmcognome normalize($jmcognome); 
...dopodicchè lo script continua inserendo il tutto in un database etc. etc. ma le variabili non vengono in nessun modo modificate...
...perchè quando uso la funzione nel mio script cessa di funzionare? :master: :master: