Função não está funcionando através da "Biblioteca Interna"

Olá a todos!

Estou enfrentando um problema:

A função a seguir funciona perfeitamente quando utilizada no próprio formulário onde eu a utilizo, ou seja, de modo direto. Porém quando tento utilizá-la, chamando-a de dentro de uma Biblioteca Interna, a mesma não funciona adequadamente.

-x-

Modo Direto:

$string = “Ação”;

$string = ereg_replace("[^a-zA-Z0-9_()]", “”, strtr($string, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", “aaaaeeiooouucAAAAEEIOOOUUC_”));

// Retorna: Acao

Modo Função:

//* No Formulário
$string = RemoveAcentos(“Ação”);

//* Na Biblioteca Interna
function RemoveAcentos($string) {
$string = ereg_replace("[^a-zA-Z0-9_()]", “”, strtr($string, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", “aaaaeeiooouucAAAAEEIOOOUUC_”));
return $string;
}

// Retorna: Ao

-x-

Tudo me leva a crer que é um BUG no SC.

Alguém pode me ajudar?

[]s.

Qual o tipo de aplicação e evento que você está chamando esse método?

Oi Yuri,

Boa tarde!

Estava chamando essa função de várias aplicações tipo “Formulário” (OnValidate).

Depois que desconfiei que não estava funcionando, abri uma aplicação tipo “Blank” e no (OnExecute), fiz todos os tipos de teste e constatei que, de fato, não funciona se chamada da “Biblioteca Interna”.

Estranho não é?

Não é estranho não, heheh é falta, de alocar corretamente a sua função na sua ‘biblioteca interna’.

Use sempre: <?php antes da sua função e depois dela ?>, se não o SC não reconhece a função na Biblioteca.

<?php
/*
Função para tirar os acentos de uma string! pode ser adaptadas para outras coisas

Como usar:
echo RemoveAcentos("Amanhã não irei caçar");
*/

function RemoveAcentos($string) {
   $string = ereg_replace("[^a-zA-Z0-9_()]", "", strtr($string, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_"));
   return $string;
}

?>

<?php
Aqui já é outra função que você vai colocar na sua Biblioteca e assim sucessivamente.
?>

E depois para usar, só ativar na sua app:

Oi Jailton,

Boa tarde!

Sei disso tudo e lhe digo que tudo isso foi feito.

Tenho outras funções, na mesma biblioteca, e elas estão funcionando OK.

O problema é que a função, apesar de reconhecida e executada, não traz o retorno desejado e é isso que acho que não está correto.

Só postei aqui porque, apesar de tudo estar correto, não funciona.

Bem deixa eu exemplificar como está minha Biblioteca:

Biblioteca.php

<?php Funcao1{ ... } Funcao2{ ... } Funcao3{ ... } ?>

Não está correta?

Usa a minha pra testar:

<?php
/*
Função para tirar os acentos de uma string! pode ser adaptadas para outras coisas

echo RemoveAcentos("Amanhã não irei caçar");
*/

function RemoveAcentos($Msg) {
	
	$Msg=str_replace('Â', 'A', $Msg);
	$Msg=str_replace('À', 'A', $Msg);
	$Msg=str_replace('Á', 'A', $Msg);
	$Msg=str_replace('Ä', 'A', $Msg);
	$Msg=str_replace('Ã', 'A', $Msg);

	$Msg=str_replace('â', 'a', $Msg);
	$Msg=str_replace('ã', 'a', $Msg);
	$Msg=str_replace('à', 'a', $Msg);
	$Msg=str_replace('á', 'a', $Msg);
	$Msg=str_replace('ä', 'a', $Msg);

	$Msg=str_replace('Ê', 'E', $Msg);
	$Msg=str_replace('È', 'E', $Msg);
	$Msg=str_replace('É', 'E', $Msg);
	$Msg=str_replace('Ë', 'E', $Msg);

	$Msg=str_replace('ê', 'e', $Msg);
	$Msg=str_replace('è', 'e', $Msg);
	$Msg=str_replace('é', 'e', $Msg);
	$Msg=str_replace('ë', 'e', $Msg);

	$Msg=str_replace('Î', 'I', $Msg);
	$Msg=str_replace('Í', 'I', $Msg);
	$Msg=str_replace('Ì', 'I', $Msg);
	$Msg=str_replace('Ï', 'I', $Msg);

	$Msg=str_replace('î', 'i', $Msg);
	$Msg=str_replace('í', 'i', $Msg);
	$Msg=str_replace('ì', 'i', $Msg);
	$Msg=str_replace('ï', 'i', $Msg);

	$Msg=str_replace('Ô', 'O', $Msg);
	$Msg=str_replace('Õ', 'O', $Msg);
	$Msg=str_replace('Ò', 'O', $Msg);
	$Msg=str_replace('Ó', 'O', $Msg);
	$Msg=str_replace('Ö', 'O', $Msg);

	$Msg=str_replace('ô', 'o', $Msg);
	$Msg=str_replace('õ', 'o', $Msg);
	$Msg=str_replace('ò', 'o', $Msg);
	$Msg=str_replace('ó', 'o', $Msg);
	$Msg=str_replace('ö', 'o', $Msg);

	$Msg=str_replace('Û', 'U', $Msg);
	$Msg=str_replace('Ù', 'U', $Msg);
	$Msg=str_replace('Ú', 'U', $Msg);
	$Msg=str_replace('Ü', 'U', $Msg);

	$Msg=str_replace('û', 'U', $Msg);
	$Msg=str_replace('ú', 'U', $Msg);
	$Msg=str_replace('ù', 'U', $Msg);
	$Msg=str_replace('ü', 'U', $Msg);

	$Msg=str_replace('¦', '', $Msg);
	$Msg=str_replace(chr(34),'', $Msg);
	$Msg=str_replace(chr(39),'', $Msg);
	$Msg=str_replace('ç', 'c', $Msg);
	$Msg=str_replace('Ç', 'C', $Msg);
	$Msg=str_replace('ª', 'a.', $Msg);
	$Msg=str_replace('º', 'o.', $Msg);
	
	$String="";

	for ($j = 0;$j <= strlen($Msg); $j++) {
		if (ord(substr($Msg, $j,1))<=122) {
			$String=$String . substr($Msg, $j, 1);
		}
	}
	
    $Msg=$String;
	
	return $Msg;

} // Fim da Função: RemoveAcentos($Msg)

?>

Oi Jailton,

Testei!

Obtive o mesmo resultado.

//Retorna: Ao

Só para constar utilizo o Charset Default que é “ISO-8859-1 para todas as minhas aplicações.

O que será?

:frowning:

Verifica o charset do projeto e da sua app, coloca tudo utf8 que deve resolver.

Oi Jailton,

Não tem outro jeito?

Se eu mudar o charset para utf-8, tudo o que já foi cadastrado irá ser mostrado com caracteres esquisitos, em certos casos.

:frowning:

Mas é por isso que esta afetando esta função a falta do utf8 ‘tá quebrando o código’.

Bom dia, eu estou com esse problema também e não entendo o que está acontecendo. Tenho uma aplicação que chama uma biblioteca com 7 funções, quando clico pra processar os dados que passam por essas funções, no browser da um Fatal Error falando que a primeiraFuncao() não existe, tentei trocar de ordem das funções dentro da biblioteca e sempre a primeira não é reconhecida, trocando só o nome da função no Fatal Error. Quando coloco elas na própria aplicação funciona normal, o que me leva a crer que não é erro de programação.

Alguém faz alguma ideia?

Desde já agradeço.
PS.: É minha primeira postagem de dúvida, se não for aqui me ajudem pf.

thiagorodrigo

Recomendo você criar um novo tópico para seu problema, pois é diferente do problema que o JamTC estava tendo.