Ir para conteúdo
gersonab

Campo texto da janela modal sendo interrompido nas aspas

Recommended Posts

Boa tarde meus amigos, utilizei o modal bootstrap do link modal bootstrap para efetuar edição de um campo texto, consigo fazer o mesmo sem problemas, porém o q ocorre é que já possuo uma tabela onde este campo texto contem em alguns deles cadastros feitos com aspas, aí esta me ocorrendo o problema, pois no caso deste tipo de edição o mesmo carrega o textarea até onde vem uma aspas, depois não completa o texto, tipo, vamos dizer que eu tenho o texto:

Imasters é um dos melhores fóruns que temos, merce "um prêmio " bla bla bla bla

só esta carregando no textarea para edição:

imasters é um dos melhores fóruns que temos, merce

 

Desde já agradeço qq ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro de console?

Porque para responder tem que ter em mente, como esses dados são salvos, como eles são carregados, como são enviados para uma função ou como é processado pelo script.

 

De qualquer forma há uma string não terminada (Uso de aspas dentro de aspas sem escapar no que dar codebreak)

Tente passar a string que contenha áspas ou XML entities como literal seguindo o padrão ECMAScript 2015

Compartilhar este post


Link para o post
Compartilhar em outros sites

perdão pela demora ao retorno , foi devido a prb de saúde, o problema esta aqui , por alguma razão estas aspas estavam cortando o texto, cheguei a trocar por aspas simples e resolveu, no entanto fiz diferente:

data-whateverdetalhes="<?php echo $obsp; ?>"

logo, como ja era um tabela com muitos itens cadastrados e era uma questão de texto, fiz um str_replace trocando as aspas por - , aí resolveu.

 

Ainda vou estudar o material q passou, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hun... Mas caso não queria perder no html as aspas e ainda consegui informar ela para o javascript veja essa classe que fiz tem um método exclusivo para decodificação XML que se aplica nesse termo:

Spoiler

<?php
/**
 * ********************************************
 * * @class StrClean
 * * @copyright (c) Spell master
 * * @version 4.0
 * * @see Classe para limpeza de string
 * ********************************************
 */

class StrClean {

    /**
     * ****************************************
     * Formata uma string que contenha
     * caracteres ilegais.
     * ****************************************
     * @param {STR} $string
     * Entrada para tratamento.
     * @return $string formatada
     * 
     * @example :
     * ENTRADA -> João e maria. @<src>Oi</src>
     * SAÍDA   -> Joao-e-maria-src-Oi-src- 
     * ****************************************
     */
    public function formatStr($string) {
        $match = [];
        $match['a'] = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜüÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿRr"!@#$%&*()_+={[}]/?;:.,\\\'<>°ºª`';
        $match['b'] = 'aaaaaaaceeeeiiiidnoooooouuuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr                                 ';
        $decode = strtr(utf8_decode($string), utf8_decode($match['a']), $match['b']);
        $stroke = preg_replace('/[ -]+/', '-', $decode);
        $leftStroke = ltrim($stroke, '-');
        $rightStroke = rtrim($leftStroke, '-');
        return (utf8_encode($rightStroke));
    }

    /**
     * ****************************************
     * Formata uma string que contenha
     * caracteres ilegais
     * - Para tratamento de
     * nomes/ endereços etc...
     * ****************************************
     * @param {STR} $name
     * Entrada para tratamento
     * @return {STR} $name formatada
     * 
     * @example :
     * ENTRADA -> "!@#$%João &*()-=[] .e maria na pada,;ria <123456789>
     * SAÍDA   -> João e maria na padaria 123456789
     * ****************************************
     */
    public function clearName($name) {
        return (preg_replace('/[^a-zA-Z À-ú 0-9]+/', null, $name));
    }

    /**
     * ****************************************
     * Converte datas para o formato latino
     * americano.
     * ****************************************
     * @param {STR} $date
     * Entrada para tratamento.
     * @return {STR} $date convertida
     * 
     * @example :
     * ENTRADA -> 2010-12-01
     * SAÍDA   -> 01/12/2010
     * ****************************************
     */
    public function invertDate($date) {
        return (implode('/', array_reverse(explode('-', $date))));
    }

    /**
     * ****************************************
     * Converte datas com horas para o formato
     * latino americano.
     * ****************************************
     * @param {STR} $dateTime
     * Entrada para tratamento.
     * @return {STR} $dateTime convertida
     * 
     * @example
     * ENTRADA -> 2010-12-01 23:59:59
     * SAÍDA   -> 01/12/2010 23:59:59
     * 
     * @todo datetime
     * ****************************************
     */
    public function dateTime($dateTime) {
        $timestamp = explode(' ', $dateTime);
        $getDate = implode('/', array_reverse(explode('-', $timestamp[0])));
        return ($getDate . ' (' . (isset($timestamp[1]) && preg_match('/:/', $timestamp[1]) ? $timestamp[1] . ')' : null) );
    }

    /**
     * ****************************************
     * Criptograga dados para binário em
     * base 64.
     * ****************************************
     * @example :
     * ENTRADA -> Olá mundo
     * SAÍDA   -> T2zDoSBtdW5kbw==
     * ****************************************
     */
    public function baseEncode($base64) {
        return (base64_encode($base64));
    }

    /**
     * ****************************************
     * Remove criptografia de dados binário
     * com base 64.
     * ****************************************
     * @example :
     * ENTRADA -> T2zDoSBtdW5kbw==
     * SAÍDA   -> Olá mundo
     * ****************************************
     */
    public function baseDecode($base64) {
        return (base64_decode($base64));
    }

    /**
     * ****************************************
     * Criptografa entradas XML para
     * Syntax HTML.
     * ****************************************
     * @param {STR} $htmlEntrie
     * String para conversão.
     * 
     * @example :
     * ENTRADA -> <div class="
     * SAÍDA   -> &lt;div class=&quot;
     * 
     * @see : Em exibição html entradas como
     * "&lt;" sempre serão mostradas como <
     * Use um depurador de console para
     * real avaliação.
     * ****************************************
     */
    public function xmlEncode($htmlEntrie) {
        return (str_replace(['&', '"', "'", '<', '>'], ['&amp;', '&quot;', '&apos;', '&lt;', '&gt;'], $htmlEntrie));
    }

    /**
     * ****************************************
     * Descriptografa entradas de Syntax HTML
     * para XML.
     * ****************************************
     * @param {STR} $htmlEntrie
     * String para conversão.
     * 
     * @example :
     * ENTRADA -> &lt;div class=&quot;
     * SAÍDA   -> <div class="
     * ****************************************
     */
    public function xmlDecode($htmlEntrie) {
        return (str_replace(['&amp;', '&quot;', '&apos;', '&lt;', '&gt;'], ['&', '"', "'", '<', '>'], $htmlEntrie));
    }

    /**
     * ****************************************
     * Limpa códigos e carcateres inválidos
     * para entradas do tipo $_GET.
     * - Ideal para prevenção de SQL-INJECT
     * e execuções inválidas pela url.
     * - NOTA: Usar somente como segunda camada
     * de proteção.
     * ****************************************
     * @param {STR} $getValue
     * Entrada para limpeza.
     * 
     * @example :
     * ENTRADA -> javascript: void();
     * SAÍDA   -> javascriptvoid
     * ****************************************
     */
    public function clearUrl($getValue) {
        return (preg_replace('/[^A-Za-z0-9-_=-]/', '', $getValue));
    }

    /**
     * ****************************************
     * Limpa espaços duplicados em uma string
     * Remove também espaços antes e depois
     * da string.
     * ****************************************
     * @param {STR} $text
     * Entrada para limpeza.
     * ****************************************
     */
    public function clearSpaces($text) {
        $string = trim(preg_replace('/ {2,}/', ' ', $text));
        return ($string);
    }

}

Obs.: Para que o método formatStr funcione corretamente arquivo que conterá essa classe deve está na codificação ANSI ou ISO8859-1

 

 

Assim sendo

<?php
$str = "Contém das áspas (\"\" ou '' ou ``) erro no javascript";

Assim sendo como essa string do php contém aspas (escapei as duplas para não dar erro no php) se tentarmos usar ela em um script sempre vai dar erro independente de qual aspa usarmos para encapsular ela como parâmetro no javascript

console.log("<?= $str ?>"); /* SyntaxError */
console.log('<?= $str ?>'); /* SyntaxError */
console.log(`<?= $str ?>`); /* SyntaxError */

 

Mas com o método xmlEncode da classe podemos converter as aspas da string;

<?php
$str = "Essa é uma scting que contém das áspas (\"\" ou '' ou ``) que vai dar erro no javascript";
$clear = new StrClean();
$decode = $clear->xmlEncode($str);
?>
<script>
    console.log("<?= $decode ?>"); /* Ok!!! */
</script>

Então caso seja questão de não perder as aspas para traços como fez está a solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por ILR master
      Salve galera.
       
      Vou publicar um evento e quero colocar um Cronômetro regressivo que mostre em tempo real os dias, horas e minutos que faltam para determinada data, tipo:.
      Faltam 5 dias, 12:30:00 para inauguração.
       
      Qdo chegar no dia, quero que apenas apareça uma mensagem.
       
      Alguém pode me ajudar?
    • Por gersonab
      bom dia
      tenho uma aplicação onde gero um arquivo em pdf, gostaria de recuperar a url do pdf q foi criado, pois quando este é criado ele abre automaticamente e ou ja faz o download do mesmo, preciso da url para enviar para outros.
      <button type="button" class="btn btn-outline-primary" onclick="createPDF();">Imprimir</button> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/canvas2image@1.0.5/canvas2image.min.js"></script> <script language="javascript"> (function($){ $.fn.createPdf = function(parametros) { var config = { 'fileName':'html-to-pdf' }; if (parametros){ $.extend(config, parametros); } var orig = $(this); var widthOrig = $(orig).width(); $(orig).width(900); var quotes = document.getElementById($(orig).attr('id')); html2canvas(quotes, { onrendered: function(canvas) { var pdf = new jsPDF('p', 'pt', 'letter'); for (var i = 0; i <= quotes.clientHeight/900; i++) { var srcImg = canvas; var sX = 0; var sY = 900*i; var sWidth = 900; var sHeight = 900; var dX = 0; var dY = 0; var dWidth = 900; var dHeight = 900; window.onePageCanvas = document.createElement("canvas"); onePageCanvas.setAttribute('width', 900); onePageCanvas.setAttribute('height', 900); var ctx = onePageCanvas.getContext('2d'); ctx.drawImage(srcImg,sX,sY,sWidth,sHeight,dX,dY,dWidth,dHeight); var canvasDataURL = onePageCanvas.toDataURL("image/png", 1.0); var width = onePageCanvas.width; var height = onePageCanvas.clientHeight; if (i > 0) { pdf.addPage(612, 791); } pdf.setPage(i+1); pdf.addImage(canvasDataURL, 'PNG', 20, 40, (width*.62), (height*.62)); // Retirar o comentário caso queira ver como está sendo gerado o canvas. //document.body.appendChild(onePageCanvas); } pdf.save(config.fileName); $(orig).width(widthOrig); } }); }; })(jQuery); function createPDF() { $('#renderPDF').createPdf({ 'fileName' : '<?php echo $usercli['idocl']; ?>' }); }  
    • Por clovis.sardinha
      Como fazer para colocar um spinner antes de carregar os dados do bd? Eu clico no link e entra na função do controle e só vai para a página da views quando já está pronto a query. Vi uns exemplos de colocação de spinner, mas se a página ainda não apareceu como faço? Vou anexar a função que chama a página para facilitar. 
      public function inativos()  {     $session = \Config\Services::session();     $pager = \Config\Services::pager();     $usuarios=$this->usuarios->getInativos();//faz a query no bd.     $dados=[         'usuarios'=>$usuarios,         'pager'=>$this->usuarios->pager,     ];     echo view('Admin/Relatorios/listaInativos',$dados); }   
    • Por gersonab
      Boa tarde a todos.
      tenho pesquisado e ainda não encontrei uma forma de montar uma imagem online, tipo, tenho uma área de 400px por 400px , nesta gostaria de acrescentar algumas imagens que já tenho, tipo clicar e arrastar para dentro, sendo que estas imagens já se encontram online no site, seria mais ou menos assim : poderia colocar dentro desta área uma imagem do gato , do cachorro e ou outra. Não sei qual biblioteca ou forma de fazer.
      gostaria da ajuda para iniciar, desde já agradeço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.