Non riuscendo a risolvere ho scritto una parte della funzione escludendo l'ultima riga,
per controllare il funzionamento.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; }
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:
e in output ho: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; ?>
...come mi aspettavo.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; }
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ì:
dopodicchè subito passo la funzione su tutte le variabili contenenti del testo scritto da un utente:Codice PHP:$jmnome = isset($_POST['jmnome']) ? $jmnome : "";
$jmcognome = isset($_POST['jmcognome']) ? $jmcognome : "";
...dopodicchè lo script continua inserendo il tutto in un database etc. etc. ma le variabili non vengono in nessun modo modificate...Codice PHP:$jmnome = normalize($jmnome);
$jmcognome = normalize($jmcognome);
...perchè quando uso la funzione nel mio script cessa di funzionare? :master::master:
![]()

:master:
Rispondi quotando