Un parell de funcions que us poden ser útils

Reading time: 2 – 3 minutes

Porto uns quants dies que crec que estic deixant de ser humà m’acaba de trucar la Daphne i semblava un mussol. No era capaç de lligar una frase amb cara i ulls. Què té a veure això amb el codi que posa més avall? doncs que estic programant una especie de webspider o robot o diga-li com vulguis per un tema de Downcenter, per tal de nutrir d’informació la BBDD del proper software que surt l’1 de desembre.

Com que no puc explicar més detalls del que estic programant em limitaré a enganxar un parell de funcions que poden ser útils a més d’un que estigui programant en PHP. Segur que sabeu que quan accediu a un formulari HTML i aquest llença una petició la URL que s’envia, com es pot comprobar a la barra de direccions del navegador, agafa una forma rara. O sigui, els espais passen a ser símbols “+” i els caràcters ASCII extesos, per sobre el codi 127, es codifiquen en codis hexadecimals.

Doncs bé aquestes funcions el que fan és precisament això, els passes una cadena, per exemple, una URL en forma de 8 bits normal i corrent i te la converteix en el format que comentava anteriorment. L’altre funció el que fa és alrevés, passa de format codificat a normal. Espero que us sigui tan útil com ho ha estat per mi.

function cadenaNormal2Hex ($cadena) {
	// Canviem simbols Hex del mig de la cadena
	$llarg = strlen($cadena);
	for ($i=0;$i<$llarg;$i++) {
		$numascii=ord($cadena[$i]);
		if ( $numascii>127 ) {  // És text pla (???)
			$car=strtoupper(dechex(ord($cadena[$i])));
			$cadena = substr_replace ($cadena,"%".$car,$i,1);
		}//if
	}//for
	// Canvia el + per l'espai
	while ($pos = strpos($cadena," ")) {
		$cadena = substr_replace ( $cadena, "+", $pos,1);
	} //while
	return $cadena;
} // function
function cadenaHex2Normal ($cadena) {
	// Canvia el + per l'espai
	while ($pos = strpos($cadena,"+")) {
		$cadena = substr_replace ( $cadena, " ", $pos,1);
	} //while
	// Canviem simbols Hex del mig de la cadena
	while ( $pos = strpos($cadena,"%") ) {
		$codi=substr($cadena,$pos+1,2);
		$car=chr(hexdec($codi));
		$cadena = substr_replace ($cadena,$car,$pos,3);
	}//while
	return $cadena;
} // function