Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    annidamento di apici, divento matto.

    sto cercando di scrivere una stringa a video che ha un po' di apici annidati, e ora sto diventando matto perchè non riesco a uscirne.
    Praticamente la stringa è composta da una serie di queste :

    codice:
    $str .= '<td>".$val['tag_nome']."</td>";
    Questa non fa altro che aggiornare il contenuto di un input text aggiungendo al suo value la parola che ho cliccato.

    Ora però ho il problema che se la parola è una frase contenente degli spazi devo aggiungere al testo clicccato gli apici " e qui mi incasino.

    Faccio un esempio pratico:

    se la parola è unica aggiungo solo il suo valore, mentre se la parola è una frase devo aggiungere anche gli apici doppi. (prova di test -> "prova di test").

    Solo che ottengo un errore js (unterminated string literal value - o una cosa del genere...)

    chi ha voglia di darmi una mano?

    ciao

  2. #2

    Re: annidamento di apici, divento matto.

    Originariamente inviato da gianiaz
    se la parola è unica aggiungo solo il suo valore
    (x)html è uno standard ben definito, dove tutti gli attributi vanno scritti rigorosamente dentro " e "


    <input type="text" value="valore" />

    questo è corretto, questo invece mai

    <input type=text ...

    come anche questo

    <input type='text' ...


    una volta definito il giusto modo di scrivere qualunque cosa su ogni tag della pagina, tra doppi apici, per aggungere un testo contenente a sua volta doppi apici non è possibile usare lo slash perchè non si è in PHP ma, per l'appunto, in (x)html, dove uno slash viene considerato come uno slash e non esiste qualcosa tipo addslashes, utile a linguaggi di scripting quali PHP o JS per evitare di "uscire da una stirnga".

    una delle soluzioni


    $valore = 'testo "con doppi apici" ma anche \\' singoli';
    $valore = addslashes(htmlentities($valore));
    echo 'link';

    o qualcosa di simile
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    grazie per la risposta andrea, non ho ancora avuto tempo di guardare, ma credo che questo mi scriverebbe nella input:

    codice:
    &_quot;prova con spazi&_quot;
    (*) ovviamente senza _ altrimenti me lo interpretava...

    e non
    codice:
    "prova con spazi"
    si complica tutto per il fatto che la stringa riportata sopra viene restituita dalla funzione tramite ajax, e poi scritta dalla funzione javascript nell'innerHTML di un div che inizialmente è vuoto...

    ciao e grazie

  4. #4
    se un input contiene &amp;quot; l'invio in post o get sarà di " e non di &amp;quot;

    ovviamente se il parsing devi farlo in JS ti basta usare


    stringa = stringa.replace(/&amp;quot;/g, '"');

    prima di sfruttarla


    P.S. comunq verifica perchè mi sa che dentro un input &amp;quot; viene sempre visto come " e non come &amp;quot;
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ho verificato, nell'input text viene mostrato quello &quot.

    Spiego meglio il mio problema, cosi magari ci intendiamo meglio.

    In un sito sto implementando i tag tanto usati nei blog.

    Sotto il campo input che uso per l'inserimento ho creato un bottone che alla pressione mostra i tag più utilizzati.
    Usando sajax quindi richiamo la funzione php che fa la chiamata sul db e "tira fuori" i tag + popolari, dopodichè restituisce una stringa html che impagina gli N tag più utilizzati.
    Questi tag sono dei link, che non hanno href, ma all'onclick aggiungono al valore della input il valore del tag cliccato.

    Sono proprio perso, non so come cavolo mostrare un apice doppio nella input...

  6. #6
    apice doppio in una input ... &amp;quot; .... sempre quello
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7

    Re: Re: annidamento di apici, divento matto.

    Originariamente inviato da andr3a
    come anche questo

    <input type='text' ...
    Gli apici singoli sono ammessi per delimitare gli attributi.

  8. #8

    Re: Re: Re: annidamento di apici, divento matto.

    Originariamente inviato da skidx
    Gli apici singoli sono ammessi per delimitare gli attributi.
    azz ... ho controllato, effettivamente è così ma tutti gli esempi del W3 sono tra doppi apici, sono stato forviato per anni (pazienza visto che non ho avuto mai un problema ... anzi, htmolentities se non si setta in modo apposito parsa solo le ", quindi mi è andata sempre bene questa "mia" convenzione)

    Il succo non cambia, fosse un quote singolo bisognerebbe usare &amp;#39; al suo interno




    [edit per gianiaz]
    codice:
    <script>
    	function copyCode(value) {
    		document.getElementById("input2").value = value;
    		document.getElementById("input2value").innerHTML = value;
    	};
    </script>
    <div>
    	<input type="text" onkeyup="copyCode(this.value);" value="&amp;quot;" />
    
    	<input id="input2" />
    	<p id="input2value"></p>
    </div>
    come ti ho detto, anche scrivendo a mano &amp;quot; dentro l'input il JS lo legge come " (ti basta aggiungere un carattere dopo il quote e vedi che l'altro input come il p avranno questo ")
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.