Visualizzazione dei risultati da 1 a 10 su 10

Discussione: aiutino per replace

  1. #1

    aiutino per replace

    <%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>

    <%
    var myString = "Shopping List" ;
    var aString ;

    aString = replace(myString, "o", "i");
    Response.Write(aString);
    %>

    Mi restituisce errore:
    Errore di run-time di Microsoft JScript (0x800A138F)
    Previsto oggetto

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao maxcondor,

    in JScript il replace è un metodo delle stringhe dove il primo parametro è una regular expression
    codice:
    var myString = "Shopping List" ; 
    var aString ; 
    
    aString = myString.replace(/o/g, "i"); 
    Response.Write(aString);

  3. #3
    Grazie per l'aiuto, ma gentilmente mi spieghi il significato di /o/g?

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    è una Regular Expression... /o/g vuol dire che deve cercare tutte le occorrenze della lettera o
    la prima slash è l'inizio della RE
    la "o" è il carattere da cercare
    l'ultima slash è la fine della RE
    la "g" indica che è Globale
    se non vuoi fare distinzione tra maiuscole e minuscole devi aggiungere anche una i ( /o/gi )

  5. #5
    scusa se ti rompo ancora le scatole... un form con una text area di nome commento, vorrei fare in modo di evitare che l'utente sciva codice htm, quindi vorrei sostituire i caratterri "<" e ">" con altri caratteri, ti posto il codice....

    questa è la parte asp
    <%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>

    <%

    // *** Edit Operations: declare variables

    // set the form action variable
    var MM_editAction = Request.ServerVariables("SCRIPT_NAME");
    if (Request.QueryString) {
    MM_editAction += "?" + Server.HTMLEncode(Request.QueryString);
    }

    // boolean to abort record edit
    var MM_abortEdit = false;

    // query string to execute
    var MM_editQuery = "";
    %>
    <%
    // *** Insert Record: set variables

    Request("commento") = Request("commento").replace(/</g, "WWWWW");

    if (String(Request("MM_insert")) == "form2") {

    var MM_editConnection = MM_conn_euro_STRING;
    var MM_editTable = "Commenti";
    var MM_editRedirectUrl = "commenti.asp";
    var MM_fieldsStr = "nome|value|commento|value|ip|value|hiddenField|va lue";
    var MM_columnsStr = "Nome|',none,''|Testo|',none,''|IP|',none,''|BlogI D|none,none,NULL";

    // create the MM_fields and MM_columns arrays
    var MM_fields = MM_fieldsStr.split("|");
    var MM_columns = MM_columnsStr.split("|");

    // set the form values
    for (var i=0; i+1 < MM_fields.length; i+=2) {
    MM_fields[i+1] = String(Request.Form(MM_fields[i]));
    }

    // append the query string to the redirect URL
    if (MM_editRedirectUrl && Request.QueryString && Request.QueryString.Count > 0) {
    MM_editRedirectUrl += ((MM_editRedirectUrl.indexOf('?') == -1)?"?":"&") + Request.QueryString;
    }
    }
    %>
    <%
    // *** Insert Record: construct a sql insert statement and execute it

    if (String(Request("MM_insert")) != "undefined") {

    // create the sql insert statement
    var MM_tableValues = "", MM_dbValues = "";
    for (var i=0; i+1 < MM_fields.length; i+=2) {
    var formVal = MM_fields[i+1];
    var MM_typesArray = MM_columns[i+1].split(",");
    var delim = (MM_typesArray[0] != "none") ? MM_typesArray[0] : "";
    var altVal = (MM_typesArray[1] != "none") ? MM_typesArray[1] : "";
    var emptyVal = (MM_typesArray[2] != "none") ? MM_typesArray[2] : "";
    if (formVal == "" || formVal == "undefined") {
    formVal = emptyVal;
    } else {
    if (altVal != "") {
    formVal = altVal;
    } else if (delim == "'") { // escape quotes
    formVal = "'" + formVal.replace(/'/g,"''") + "'";
    } else {
    formVal = delim + formVal + delim;
    }
    }
    MM_tableValues += ((i != 0) ? "," : "") + MM_columns[i];
    MM_dbValues += ((i != 0) ? "," : "") + formVal;
    }

    MM_editQuery = "insert into " + MM_editTable + " (" + MM_tableValues + ") values (" + MM_dbValues + ")";

    if (!MM_abortEdit) {
    // execute the insert
    var MM_editCmd = Server.CreateObject('ADODB.Command');
    MM_editCmd.ActiveConnection = MM_editConnection;
    MM_editCmd.CommandText = MM_editQuery;
    MM_editCmd.Execute();
    MM_editCmd.ActiveConnection.Close();

    if (MM_editRedirectUrl) {
    Response.Redirect(MM_editRedirectUrl);
    }
    }

    }
    %>
    <%
    var RecCommento__MMColParam = "1";
    if (String(Request.QueryString("id")) != "undefined" &&
    String(Request.QueryString("id")) != "") {
    RecCommento__MMColParam = String(Request.QueryString("id"));
    }
    %>
    <%
    var RecCommento = Server.CreateObject("ADODB.Recordset");
    RecCommento.ActiveConnection = MM_conn_euro_STRING;
    RecCommento.Source = "SELECT * FROM Commenti WHERE BlogID = "+ RecCommento__MMColParam.replace(/'/g, "''") + " ORDER BY Data DESC";
    RecCommento.CursorType = 0;
    RecCommento.CursorLocation = 2;
    RecCommento.LockType = 1;
    RecCommento.Open();
    var RecCommento_numRows = 0;
    %>
    <%
    var Rec_blog__MMColParam = "1";
    if (String(Request.QueryString("ID")) != "undefined" &&
    String(Request.QueryString("ID")) != "") {
    Rec_blog__MMColParam = String(Request.QueryString("ID"));
    }
    %>
    <%
    var Rec_blog = Server.CreateObject("ADODB.Recordset");
    Rec_blog.ActiveConnection = MM_conn_euro_STRING;
    Rec_blog.Source = "SELECT * FROM Blog WHERE ID = "+ Rec_blog__MMColParam.replace(/'/g, "''") + "";
    Rec_blog.CursorType = 0;
    Rec_blog.CursorLocation = 2;
    Rec_blog.LockType = 1;
    Rec_blog.Open();
    var Rec_blog_numRows = 0;
    %>

    la parte html contiene un form con una textarea di nome commento... Dove e come inserisco la funzione di replace?

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Il Request è di sola lettura non puoi modificarlo.... questa roba è sbagliatissima
    codice:
    Request("commento") = Request("commento").replace(/</g, "WWWWW");
    invece di trasformare < e > in caratteri strani è meglio se fai l'htmlencode.
    per caso quel codice li te lo genere Macromedia?
    io cambierei la riga
    codice:
    formVal = "'" + formVal.replace(/'/g,"''") + "'";
    con
    codice:
    formVal = "'" + Server.HTMLEncode(formVal).replace(/'/g,"''") + "'";
    se invece vuoi proprio sostituire con WWWWW
    codice:
    formVal = "'" + formVal.replace(/'/g,"''").replace(/</g,"WWWWW").replace(/>/g,"WWWWW") + "'";

  7. #7
    provo e ti faccio sapere

  8. #8
    si funziona, non hai per caso un sistema (penso che si usi una regularexpression, per ripulire tutti i tag xhtml?

    Grazie ancora

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    per eliminare tutti i tag puoi fare così
    codice:
    formVal = "'" + formVal.replace(/'/g,"''").replace(/<[^>]*>/g,"") + "'";
    la re è /<[^>]*>/g che vuol dire
    / = inizio RE
    < = il carattere <
    [^>] = qualunque cosa diversa da >
    * = 0 o più occorrenze del carattere precedente (che era qualunque cosa diversa da >
    > = il carattere >
    / = fine RE
    g = globale


  10. #10
    Fenomenale... funziona... grazie di cuore

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.