Comparação de strings

Bom dia pessoal! Eu tenho o seguinte:
Em uma tabela no banco de dados, um campo tipo longtext.
Nele, através do campo tipo Editor HTML é gravado o texto dentro de tags HTML.
Eu criei uma rotina onde quando o usuário alterar o texto desse campo e clicar em voltar, eu verifico se há alterações.
Se houver, eu mostro uma mensagem com sweetalert perguntando se ele deseja salvar a alteração antes de sair.
E é aqui que está o meu problema. Eu comparo o valor que está digitado ali no campo com o valor que está gravado no banco.
Se eu der um echo, ele mostra idênticas como podem ver abaixo:
str1: < p >Responsáveis< /p > <== Esse vem do formulário mesmo com a alteração (caso haja)
str2: < p >Responsáveis< /p > <== Esse vem do banco pra que eu possa fazer a comparação se houve a alteração.

**** coloquei espaço pq não estava aparecendo as tags. ****

Já testou a macro if (sc_changed({Nome_Campo}))
https://www.scriptcase.com.br/docs/pt_br/v9/manual/14-macros/01-visao-geral/#sc_changed

2 Curtidas

Amigo, eu não conhecia essa macro. Mas ela também não me resolveu. Ele entra no if como se eu tivesse feito alguma alteração no campo

1 Curtida

Um detalhe:
Na inclusão do registro, ele grava com caracteres especiais no lugar dos acentos.
Quando entro pra editar o registro e salvo, ele grava o texto com acentuação.

aprendi mais essa com você

Bom dia a todos! Ainda estou com este problema.
Fiz um teste através da sugestão do @Jailton de colocar md5 nas duas strings para compara-las mas também não deu certo. O que pode estar fazendo uma ficar diferente da outra se quando dou um echo pra mostrar as strings elas aparecem IDÊNTICAS? As ideias de como fazer isso já se esgotaram rs.
Importante: isso tem ocorrido apenas quando há acentuação nas strings. Caso não haja, faz certinho.

Transforma o conteúdo deste campo em code_base64(), e cola ele aqui com [ code ] [ /code ],
ai vou fazer uns testes com o editor html.

1 Curtida

já tentou usar strcmp ou strcasecmp do php?

if(strcasecmp($string1, $string2) == 0)
	echo "tudo certo";
else
	echo "algo de errado";
3 Curtidas

Obrigado Jair, vou tentar

1 Curtida
Queixa 1: PHA+UmVzcG9ucyZhYWN1dGU7dmVsPC9wPg0KPHA+U29sdSZjY2VkaWw7Jm90aWxkZTtlczwvcD4=
Queixa 2: PHA+UmVzcG9ucyZhYWN1dGU7dmVsPC9wPgo8cD5Tb2x1JmNjZWRpbDsmb3RpbGRlO2VzPC9wPg==

Retornou isso Jailton!

@jair, obrigado mas também não funcionou. :pensive:

ainda tem esperança :slight_smile:

se quando da o echo parecem iguais, talver usando o htmlentities , htmlspecialchars mas como salva com caracteres especiais, htmlspecialchars_decode tvz consiga comparar
exemplo:

$string1 = "e a > 1";
$string2 = "e a &gt; 1";

$string2 = htmlspecialchars_decode($string2);

if(strcasecmp(trim($string1), trim($string2)) == 0)
	echo "<br>bateu";
else
	echo "<br>algo de errado";

Thiago, só deu certo, assim que mudei no banco e no form para utf8, latin1_swedish_ci ele dá erro.

O campo do Scriptcase Editor Html pode estar trabalhando internamente somente um UTF8, por isso
que quando você coloca os acentos em latin1 ele dá erro e não compara corretamente.

2 Curtidas