FUNCIONS BÀSIQUES EN PHP

 

PHP més de permetre'ns definir les nostres pròpies funcions, disposa d'una gran quantitat de funcions pròpies del llenguatge a les que s'anomena "funcions natives" o "funcions del core o nucli php". Ja coneixem algunes d'elles com strlen i substr. Anem a veure altres funcions molt usades relacionades amb el maneig de cadenes de caràcters (text).

 

FUNCIÓ str_replace

Aquesta funció s'utilitza per reemplaçar caràcters dins d'una cadena de caràcters. És a dir, ens permet definir una cadena que ha de ser reemplaçada amb una altra dins d'una frase o paraula. La funció torna la frase original amb totes les aparicions de la cadena a cercar reemplaçades amb una cadena de reemplaçament especificada.

La sintaxi bàsica habitual per a aquesta funció és:

str_replace ("cadena a buscar", "cadena de reemplaçament", $ variableOFraseOriginal)

Vegem-ho amb un exemple per a entendre-la millor. Escriu aquest codi i guardeu amb un nom de fitxer com ejemplo1.php. A continuació, puja el fitxer al servidor i visualitza el resultat.

<? Php // Exemple funcions bàsiques

$text = "deia blanc ara diu negre." ;

str_replace("Diego" , "retallades" , $text);

echo "<br/>" ;

echo $text;

?>

 

Com podem observar, a la cadena de caràcters $ text, hem substituït la paraula o conjunt de caràcters "Diego" per "Retallades" i hem tornat el resultat sense definir la variable d'entrada.

Fixa't que en el codi que hem escrit no hem reemplaçat el valor de la variable $text per un nou contingut. Únicament hem imprès per pantalla el resultat que ens retorna la funció. Si haguéssim escrit el següent si haguéssim canviat el contingut de la variable: $text = str_replace("Diego", "retallades", $text);

La funció permet passar opcionalment un paràmetre addicional que permet saber a posteriori el nombre de reemplaçaments que s'han realitzat:

str_replace ("cadena a buscar", "cadena de reemplaçament", $ variableOFraseOriginal, $ numReemplazos)

Vegem-ho amb un exemple per entendre-ho millor:

<? Php // Exemple funcions bàsiques

$text="El dit: és tard ara, però és millor si hi ha tres";

str_replace("és", "**", $text, $reemplaçaments);

echo '<br/> S'han realitzat:'. $reemplaçaments. 'Reemplaçaments <br/>';

echo $text;

?>

El resultat esperat és: El va dir: ** tarda ara, però ** millor si hi ha tr **, S'han realitzat: 3 reemplaçaments, El dir: és tard ara, però és millor si hi ha tres

Fixa't que es reemplaça la cadena "és" indistintament segons estigui separada per espais o dins d'una paraula. Si només volguéssim reemplaçar la cadena si està separada per espais podríem indicar els espais dins de la cadena: echo str_replace("és", "**", $text, $reemplaçaments);

Aquí hem indicat que es reemplaci espai-és-espai amb espai - &# - espai.

Si fos necessari establir regles complexes de reemplaçament, per exemple "reemplaçar totes les paraules que comencin per ai acabin per a amb una altra paraula, hauríem de fer servir el que s'anomenen expressions regulars, però no estudiarem ara la forma de definir i emprar expressions regulars amb PHP.

 

FUNCIONS strtolower I STRTOUPPER

Les funcions strtolower i strtoupper transformen una cadena de caràcters en la mateixa cadena en minúscules o majúscules respectivament. Escriu ara aquest codi i guardeu amb un nom de fitxer com ejemplo4.php. A continuació, puja el fitxer al servidor i visualitza el resultat.

<? Php // Exemple funcions bàsiques

$cadena="Això és una cadena de caràcters" ;

echo strtolower($cadena);

echo "<br/>" ;

echo strtoupper($cadena);

?>

 

Com veiem el comportament de les funcions és senzill. Simplement tornen la cadena de caràcters passada com argument en minúscules o majúscules respectivament.

Tingues en compte que moltes vegades per fer comparacions o per emmagatzemar dades serà interessant uniformitzar la informació que s'emmagatzema. Per exemple, si es demana una ciutat, un usuari pot introduir Buenos Aires, un altre Buenos aires, un altre BUENOS AIRES. Si fem servir aquestes funcions, podem uniformitzar i fer que sempre es mostrin o guardin d'una mateixa manera, la qual cosa facilitarà la feina posterior.

 

FUNCIÓ COUNT_CHARS I SUBSTR_COUNT

La funció count_chars serveix per comptar el nombre d'aparicions d'un caràcter en una cadena.

La sintaxi a emprar és la següent:

count_chars ($cadena, $opcModo)

$ OpcModo és un enter opcional. Si no s'especifica val 0 per defecte. Els seus valors admesos són:

0: es retornarà un array amb el valor numèric ascii com a índex i la freqüència de cada caràcter ascii com a valor.

1: es retornarà un array amb el valor numèric ascii com a índex i la freqüència de cada caràcter que aparegui a mínim un cop com a valor.

2: es retornarà un array de caràcters que no apareixen a la cadena, amb el valor numèric ascii com a índex i la freqüència de cada caràcter ascii que no apareix com a valor.

3: retorna una cadena que conté tots els caràcters únics.

4: retorna una cadena que conté tots els caràcters no utilitzats.

 

Nota: els codis numèrics ascii van de 0 a 255 i no tots són visibles per pantalla.

Exemple:

<? Php // Example count_chars aprenderaprogramar.com

$cadena='és dijous';

$meuArray=count_chars($cadena,1);

foreach($meuArray com $indexNum=>$vegades) {

   echo 'Lletra:'.chr($indexNum).' , Trobada '. $vegades.' vegades <br/> ';

}

?>

El resultat esperat és: Lletra:, trobada 1 vegades. Lletra: i, trobada 3 vegades. Lletra: j, trobada 1 vegades. Lletra: s, trobada 2 cops.Lletra: u, trobada 1 vegades. Lletra: v, trobada 1 vegades

 

Una altra funció útil és substr_count($cadena,$subcadena). Aquesta funció ens retorna el nombre de vegades que apareix la subcadena dins de la cadena. Per exemple:

<Charset meta = "UTF-8">

<? Php // Exemple curs PHP

$cadena1='Pedro Juan Luis Marco Luis Pedro Juan Luis Pedro';

$cadena2 = 'Luis';

echo 'Luis apareix'.substr_count($cadena1, $cadena2). ' vegades'

?>

El resultat esperat és << Luis apareix 3 vegades >>

 

ALTRES FUNCIONS PER CADENES DE TEXT

PHP defineix nombroses funcions natives per al maneig de cadenes de text. Anem a veure algunes d'elles:

FUNCIÓ

UTILITAT

EXEMPLES aprenderaprogramar.com

strlen ($cadena)

Retorna la longitud o nombre de caràcters de la cadena

Veure lliuraments anteriors del curs

substr ($cadena, $inici, $opcNumCar)

Si no s'especifica $ opcNumCar retorna la subcadena entre la posició $ inici i la fi de cadena sent la posició inicial la zero. Si s'especifica $opcNumCar extreu $opcNumCar caràcters des de la posició $inici (inclosos).

Veure lliuraments anteriors del curs

ucfirst($cadena);

Retorna la cadena amb la primera lletra en majúscules

$salutacio="avui és divendres";

ucfirst($salutacio);

// Avui és divendres

ucwords($cadena);

Retorna la cadena amb cadascuna de les seves paraules amb la primera lletra en majúscules

$salutacio="avui és divendres";

echo ucwords ($salutació);

// Avui És Divendres

strpos ($cadena, $subcadena, $opcPosInicio)

Retorna la posició en què comença la subcadena a partir de la posició inicial (zero) si no s'especifica $opcPosInicio, oa partir de la posició $opcPosInicio si s'especifica. Si no es troba la subcadena retorna false.

$salutació="avui és divendres";

echo strpos ($salutació, "és");

// 4

trim($cadena, $opcCaracteres)

Si no s'especifica $opcCaracteres, retorna l'eliminant espais en blanc, tabuladors, salts de línia i retorns de carro del principi i final de la cadena. Si s'especifica $opcCaracteres, s'eliminen els caràcters especificats.

$salutacio="*** avui és divendres ***";

echo trim($salutacio, "*");

// Avui és divendres

Nota: pot no funcionar com s'espera a causa de joc de caràcters, configuració local i configuració del servidor.

ltrim($cadena, $opcCaracteres)

Si no s'especifica $opcCaracteres, retorna l'eliminant espais en blanc, tabuladors, salts de línia i retorns de carro del principi de la cadena. Si s'especifica $opcCaracteres, s'eliminen els caràcters especificats.

$salutacio="*** avui és divendres ***";

echo ltrim($salutacio,"*");

// Avui és divendres ***

Nota: pot no funcionar com s'espera a causa de joc de caràcters, configuració local i configuració del servidor.

rtrim($cadena, $opcCaracteres)

Si no s'especifica $opcCaracteres, retorna l'eliminant espais en blanc, tabuladors, salts de línia i retorns de carro del final de la cadena. Si s'especifica $opcCaracteres, s'eliminen els caràcters especificats.

$salutacio="*** avui és divendres ***";

echo rtrim($salutacio, "*");

// *** Avui és divendres

Nota: pot no funcionar com s'espera a causa de joc de caràcters, configuració local i configuració del servidor.

 

Igual que rtrim

 

str_repeat($cadena, $numVeces)

Retorna la cadena repetida $numVeces sent aquest un nombre sencer.

$salutacio='hola';

str_repeat($salutacio,3);

// Hola hola hola

strstr($cadena, $des, $opcBoolean)

Retorna la subcadena des de la primera aparició de $des de (inclosa) fins al final si no s'especifica opcBoolean o aquest és false. Si $ opcBoolean és true retorna la subcadena des de l'inici fins a la primera aparició de $des de (exclosa).

$salutacio="avui és divendres";

echo strstr($salutacio,"és", false);

// És divendres

strchr

Igual que strstr

 

chr($ascii)

Retorna el caràcter corresponent al codi numèric enter $ascii segons el codi ascii

echo chr(65). 'És la sortida';

// A és la sortida

Existeixen més funcions per a cadenes en PHP però els programadors no les solen conèixer totes, ja que algunes són per a tasques molt específiques. No et preocupis per memoritzar les funcions ni per conèixer-les totes, simplement sigues conscient de la seva existència i aprèn a buscar-les quan et resultin necearias. Si en algun moment necessites realitzar tasques molt específiques amb cadenes en PHP pots conèixer totes les funcions existents sobre cadenes acudint a la documentació oficial de PHP sobre funcions de cadenes, disponible a http://php.net/manual/es/ref.strings .php

 

EXERCICI

Crear arxius php que executin la tasca indicada:

a) Donada la cadena "L'abecedari complet és una cosa llarg i detallar-exhaustivament és costós", indicar quantes vegades apareix cada vocal usant funcions per a cadenes PHP.

b) Donada la cadena "L'abecedari complet és una cosa llarg i detallar-exhaustivament és costós", indicar quines consonants són les que apareixen i quantes vegades apareixen usant funcions per a cadenes PHP.

c) Donada la cadena "L'abecedari complet és una cosa llarg i detallar-exhaustivament és costós", mostrar la cadena on totes les a hagin estat substituïdes pel símbol *. Per exemple en lloc de << L'abecedari ... >> s'haurà de mostrar << El * beced * ri ... >>

d) Donada la cadena "L'abecedari complet és una cosa llarg i detallar-exhaustivament és costós", mostrar la subcadena des de la primera aparició de << complet >> excloent complet, és a dir, haurà de mostrar << és una cosa llarg i detallar-exhaustivament és costós >>. Per a això usa una o diverses funcions per a cadenes PHP.