Archivo de la categoría ‘php’

comprimir página web con zlib

Miércoles, 18 de Mayo de 2011

Para comprimir una página se puede utilizar este tipo de compresión - zlib, Este escript comprueba si está instalado o no este tipo de compresión. Lo que no se es si es compatible con el gzip de toda la vida.

// Set HTML Compression on

if (extension_loaded(’zlib’)){

$_zlib_included = strtolower(ini_get(’zlib.output_compression’));

if (empty($_zlib_included) || $_zlib_included == ‘off’)

{

ini_set(’zlib.output_compression_level’, 7);

ob_start(’ob_gzhandler’);

}

}

Redirecciones PHP

Martes, 19 de Abril de 2011

Esta es una función generica de redirecciones en PHP

function movePage($num,$url){
static $http = array (
100 => “HTTP/1.1 100 Continue”,
101 => “HTTP/1.1 101 Switching Protocols”,
200 => “HTTP/1.1 200 OK”,
201 => “HTTP/1.1 201 Created”,
202 => “HTTP/1.1 202 Accepted”,
203 => “HTTP/1.1 203 Non-Authoritative Information”,
204 => “HTTP/1.1 204 No Content”,
205 => “HTTP/1.1 205 Reset Content”,
206 => “HTTP/1.1 206 Partial Content”,
300 => “HTTP/1.1 300 Multiple Choices”,
301 => “HTTP/1.1 301 Moved Permanently”,
302 => “HTTP/1.1 302 Found”,
303 => “HTTP/1.1 303 See Other”,
304 => “HTTP/1.1 304 Not Modified”,
305 => “HTTP/1.1 305 Use Proxy”,
307 => “HTTP/1.1 307 Temporary Redirect”,
400 => “HTTP/1.1 400 Bad Request”,
401 => “HTTP/1.1 401 Unauthorized”,
402 => “HTTP/1.1 402 Payment Required”,
403 => “HTTP/1.1 403 Forbidden”,
404 => “HTTP/1.1 404 Not Found”,
405 => “HTTP/1.1 405 Method Not Allowed”,
406 => “HTTP/1.1 406 Not Acceptable”,
407 => “HTTP/1.1 407 Proxy Authentication Required”,
408 => “HTTP/1.1 408 Request Time-out”,
409 => “HTTP/1.1 409 Conflict”,
410 => “HTTP/1.1 410 Gone”,
411 => “HTTP/1.1 411 Length Required”,
412 => “HTTP/1.1 412 Precondition Failed”,
413 => “HTTP/1.1 413 Request Entity Too Large”,
414 => “HTTP/1.1 414 Request-URI Too Large”,
415 => “HTTP/1.1 415 Unsupported Media Type”,
416 => “HTTP/1.1 416 Requested range not satisfiable”,
417 => “HTTP/1.1 417 Expectation Failed”,
500 => “HTTP/1.1 500 Internal Server Error”,
501 => “HTTP/1.1 501 Not Implemented”,
502 => “HTTP/1.1 502 Bad Gateway”,
503 => “HTTP/1.1 503 Service Unavailable”,
504 => “HTTP/1.1 504 Gateway Time-out”
);
header($http[$num]);
header(“Location: $url”);
}

La llamada de un ejemplo 403:

movePage(403,”http://www.vinosyrecetas.com/”);

Poner contrabarras en string con comillas

Jueves, 3 de Marzo de 2011

esta es la función

addslashes

Poner ceros a la izquierda de un número

Miércoles, 2 de Marzo de 2011

function number_pad($number,$n) {

return str_pad((int) $number,$n,”0″,STR_PAD_LEFT);
}

//$number es el numero a modificar
// y $n sol los dígitos que se quiere contemplar, no los ceros a poner, en mi caso es $n=2

Generar archivo csv con php

Martes, 25 de Enero de 2011

Ponemos el código para generar csv desde php, y guardarlo

<?php
include(“connect.php”); // Conexion a nuestra BD
$csv_end = ”
“;
$csv_sep = “|”;
$csv_file = “datas.csv”;
$csv=“”;
$sql=“SELECT * from table”;
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{
$csv.=$row['field_1'].$csv_sep.$row['field_2'].$csv_end;
}
//Generamos el csv de todos los datos
if (!$handle = fopen($csv_file, “w”)) {
echo “Cannot open file”;
exit;
}
if (fwrite($handle, utf8_decode($csv)) === FALSE) {
echo “Cannot write to file”;
exit;
}
fclose($handle);
?>

Quitar taggs HTML en php

Lunes, 17 de Enero de 2011

Para quitar el HTML de una texto se puede hacer mediante la función:

strip_tags()

ejemplo:

echo strip_tags($text);

Si queremos excluir alguna etiqueta:

echo strip_tags($text, ‘<p><a>’);

Problema con los acentos ajax

Viernes, 14 de Enero de 2011

Para solucionar el problema de los acentos en ajax al retornar resultados con acentos y otros caracteres especiales:

header(’Content-Type: text/html; charset=ISO-8859-1′);

setlocale(LC_CTYPE,”es_ES”);

ejemplos de preg_match_all php

Martes, 12 de Octubre de 2010
/ retrieve doctype of document

function get_doctype($file){
$h1tags = preg_match(‘/<!DOCTYPE (\w.*)dtd”>/is’,$file,$patterns);
$res = array();
array_push($res,$patterns[0]);
array_push($res,count($patterns[0]));
return
$res;
}

// retrieve page title
function get_doc_title($file){
$h1tags = preg_match(‘/<title> ?.* <\/title>/isx’,$file,$patterns);
$res = array();
array_push($res,$patterns[0]);
array_push($res,count($patterns[0]));
return
$res;
}

// retrieve keywords
function get_keywords($file){
$h1tags = preg_match(‘/(<meta name=”keywords” content=”(.*)” \/>)/i’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// get rel links in header of the site
function get_link_rel($file){
$h1tags = preg_match_all(‘/(rel=)(”.*”) href=(”.*”)/im’,$file,$patterns);
$res = array();
array_push($res,$patterns);
array_push($res,count($patterns[2]));
return
$res;
}

function get_external_css($file){
$h1tags = preg_match_all(‘/(href=”)(\w.*\.css)”/i’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve all h1 tags
function get_h1($file){
$h1tags = preg_match_all(“/(<h1.*>)(\w.*)(<\/h1>)/isxmU”,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve all h2 tags
function get_h2($file){
$h1tags = preg_match_all(“/(<h2.*>)(\w.*)(<\/h2>)/isxmU”,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve all h3 tags
function get_h3($file){
$h1tags = preg_match_all(“/(<h3.*>)(\w.*)(<\/h3>)/ismU”,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve all h4 tags
function get_h4($file){
$h1tags = preg_match_all(“/(<h4.*>)(\w.*)(<\/h4>)/ismU”,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve all h5 tags
function get_h5($file){
$h1tags = preg_match_all(“/(<h5.*>)(\w.*)(<\/h5>)/ismU”,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve all h5 tags
function get_h6($file){
$h1tags = preg_match_all(“/(<h6.*>)(\w.*)(<\/h6>)/ismU”,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve p tag contents
function get_p($file){
$h1tags = preg_match_all(“/(<p.*>)(\w.*)(<\/p>)/ismU”,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve names of links
function get_a_content($file){
$h1count = preg_match_all(“/(<a.*>)(\w.*)(<.*>)/ismU”,$file,$patterns);
return
$patterns[2];
}

// retrieve link destinations
function get_a_href($file){
$h1count = preg_match_all(‘/(href=”)(.*?)(”)/i’,$file,$patterns);
return
$patterns[2];
}

// get count of href’s
function get_a_href_count($file){
$h1count = preg_match_all(‘/<(a.*) href=\”(.*?)\”(.*)<\/a>/’,$file,$patterns);
return
count($patterns[0]);
}

//get all additional tags inside a link tag
function get_a_additionaltags($file){
$h1count = preg_match_all(‘/<(a.*) href=”(.*?)”(.*)>(.*)(<\/a>)/’,$file,$patterns);
return
$patterns[3];
}

// retrieve span’s
function get_span($file){
$h1count = preg_match_all(‘/(<span .*>)(.*)(<\/span>)/’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve spans on the site
function get_script($file){
$h1count = preg_match_all(‘/(<script.*>)(.*)(<\/script>)/imxsU’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve content of ul’s
function get_ul($file){
$h1count = preg_match_all(‘/(<ul \w*>)(.*)(<\/ul>)/ismxU’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

//retrieve li contents
function get_li($file){
$h1count = preg_match_all(‘/(<li \w*>)(.*)(<\/li>)/ismxU’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve page comments
function get_comments($file){
$h1count = preg_match_all(‘/(<!–).(.*)(–>)/isU’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve all used id’s on the page
function get_ids($file){
$h1count = preg_match_all(‘/(id=”(\w*)”)/is’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve all used classes ( inline ) of the document
function get_classes($file){
$h1count = preg_match_all(‘/(class=”(\w*)”)/is’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// get the meta tag contents
function get_meta_content($file){
$h1count = preg_match_all(‘/(<meta)(.*=”(.*)”).\/>/ix’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// get inline styles
function get_styles($file){
$h1count = preg_match_all(‘/(style=”)(.*?)(”)/is’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// get titles of tags
function get_tag_titles($file){
$h1count = preg_match_all(‘/(title=)”(.*)”(.*)/’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// get image alt descriptions
function get_image_alt($file){
$h1count = preg_match_all(‘/(alt=.)([a-zA-Z0-9\s]{1,})/’,$file,$patterns);
$res = array();
array_push($res,$patterns[2]);
array_push($res,count($patterns[2]));
return
$res;
}

// retrieve images on the site
function get_images($file){
$h1count = preg_match_all(‘/(<img)\s (src=”([a-zA-Z0-9\.;:\/\?&=_|\r|\n]{1,})”)/isxmU’,$file,$patterns);
$res = array();
array_push($res,$patterns[3]);
array_push($res,count($patterns[3]));
return
$res;
}

// retrieve email address of the mailto tag if any
function get_mailto($file){
$h1count = preg_match_all(‘/(<a\shref=”)(mailto:)([a-zA-Z@0-9\.]{1,})”/ims’,$file,$patterns);
$res = array();
array_push($res,$patterns[3]);
array_push($res,count($patterns[3]));
return
$res;
}

// retrieve any email
function get_emails($file){
$h1count = preg_match_all(‘/[a-zA-Z0-9_-]{1,}@[a-zA-Z0-9-_]{1,}\.[a-zA-Z]{1,4}/’,$file,$patterns);
$res = array();
array_push($res,$patterns[0]);
array_push($res,count($patterns[0]));
return
$res;
}

// count used keywords
function countkeyword($word,$file){
$x = preg_match_all(“/(.*)($word)(.*)/”,$file,$patterns);
return
count($patterns);
}

// retrieve internal site links
function get_internal_links($array){
$result = array();
$count = count($array);
for(
$i=0;$i<$count;$i++){
if(!empty(
$array[$i])){
if(
strpos($array[$i],“www”,0) === false){
if(
strpos($array[$i],“http”,0) === false){
array_push($result,$array[$i]);
}
}
}
}
return
$result;
}

// retrieve external links
function get_external_links($array){
$result = array();
$count = count($array);
for(
$i=0;$i<$count;$i++){
if(!empty(
$array[$i])){
if(
strpos($array[$i],“www”,0) !== false){
if(
strpos($array[$i],“http”,0) !== false){
array_push($result,$array[$i]);
}
}
}
}
return
$result;
}

// retrieve the main url of the site
function get_main_url($url){
$parts = parse_url($url);
$url = $parts["scheme"] .“://”.$parts["host"];
return
$url;
}

// retrieve just the name without www and com/eu/de etc
function get_domain_name_only($url){
$match = preg_match(“/(.*:\/\/)\w{0,}(.*)\.(.*)/”,$url,$patterns);
$patterns[2] = str_replace(“.”,“”,$patterns[2]);
return
$patterns[2];
}
?>

Usage Example

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Untitled Document</title>
<style type=”text/css”>
<!–
body {
font: 11px Arial, Helvetica, sans-serif;
}
.info {
color: #99CC00;
font-weight: bold;
}
.notice {
color: #FF66CC;
}
.error {
color: #990000;
font-weight: bold;
}
–>
</style>
</head>

<body><form action=”" method=”post” enctype=”application/x-www-form-urlencoded” name=”form1″>
<input name=”url” type=”text” /><input name=”submit” type=”submit” value=”submit” /></form>

<?php if(isset($_POST['submit']) && $_POST['submit'] == “submit”){
$resultArray = array();
$url = htmlentities(strip_tags($_POST['url']));
include(
“tagretrieval.php”);

if(strpos($url,“http”,0) === false){
$url = “http://$url”;
}

echo “<img src=\”http://www.artviper.net/screenshots/screener.php?url=$url&amp;h=180&amp;w=240&amp;sdx=1024&amp;sdy=768\” alt=\”$url\” style=\”margin:20px\” />”;

$file = file_get_contents($url);
$doctype = get_doctype($file);
$keywords = get_keywords($file);
$css = get_external_css($file);
$h1 = get_h1($file);
$h2 = get_h2($file);
$h3 = get_h3($file);
$p = get_p($file);
$title = get_doc_title($file);
$links = get_a_href($file);
$href_add = get_a_additionaltags($file);
$images = get_images($file);
$styles = get_styles($file);
$ids = get_ids($file);
$classes = get_classes($file);

echo“<h1>Document properties</h1>”;
// get doctype
if(!empty($doctype[0])){
$doctype = preg_replace(“/</”,‘&lt;’,$doctype[0]);
echo
“<br/>Valid doctype: $doctype”;
}else{
$doctype = “<br/>No doctype specified<br/>”;
echo
$doctype;
}

// get doc title
if(!empty($title[0])){
$title[0] = preg_replace(“/</”,“&lt;”,$title[0]);
echo
“<br/>Title found: $title[0]<”;
}else{
echo
“<br/><div class=\”error\”>Page does not have a title</div><br/>”;
}

// get external references CSS files
// get h1 tags
if($css[1] != 0){
echo
“<br/>external CSS found: $css[1]<ul>”;
foreach(
$css[0] as $key => $val){
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/><div class=\”error\”>No external CSS found</div><br/>”;
}

// get keywords
if(!empty($keywords[0])){
echo
“<br/>Keywords found: $keywords[0]“;
}else{
echo
“<br/><div class=\”error\”>No keywords specified</div><br/>”;
}

echo“<h1>Content properties</h1>”;
// get h1 tags
if($h1[1] != 0){
echo
“<br/>H1 Tags found: $h1[1]<ul>”;
foreach(
$h1[0] as $key => $val){
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/><div class=\”error\”>No H1 Tags found</div><br/>”;
}
// get h2 tags
if($h2[1] != 0){
echo
“<br/>H2 Tags found: $h2[1]<ul>”;
foreach(
$h2[0] as $key => $val){
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/><div class=\”error\”>No H2 Tags found</div><br/>”;
}

// get h3 tags
if($h3[1] != 0){
echo
“<br/>H3 Tags found: $h3[1]<ul>”;
foreach(
$h3[0] as $key => $val){
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/><div class=\”error\”>No H3 Tags found</div><br/>”;
}
// get p tags
if($p[1] != 0){
echo
“<br/>p Tags found: $p[1]<ul>”;
foreach(
$p[0] as $key => $val){
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/><div class=\”error\”>No p Tags found</div><br/>”;
}

echo “<h1>Link structure</h1>”;

if(!empty($links[0])){
echo
“<br/>Links found:<ul>”;
foreach(
$links as $key => $val){
$val = preg_replace(“/</”,“&lt;”,$val);
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/><div class=\”error\”>No Links found</div><br/>”;
}

if(!empty($href_add[0])){
echo
“<br/>href additional tags:<ul>”;
foreach(
$href_add as $key => $val){
$val = preg_replace(“/</”,“&lt;”,$val);
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/><div class=\”error\”>No additional styles for href found</div><br/>”;
}

echo “<h1>Images</h1>”;

if(!empty($images[0])){
echo
“<br/>images:<ul>”;
foreach(
$images[0] as $key => $val){
$val = preg_replace(“/</”,“&lt;”,$val);
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/>No images found”;
}

echo “<h1>Styles, ID’s &amp; Classes</h1>”;

if(!empty($ids[0])){
echo
“<br/>ID’s:<ul>”;
foreach(
$ids[0] as $key => $val){
$val = preg_replace(“/</”,“&lt;”,$val);
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/>No ID’s found<br/>”;
}

if(!empty($classes[0])){
echo
“<br/>classes:<ul>”;
foreach(
$classes[0] as $key => $val){
$val = preg_replace(“/</”,“&lt;”,$val);
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“</ul>”;
}else{
echo
“<br/>No classes found<br/>”;
}

if(!empty($styles[0])){
echo
“<br/>inline styles:<ul>”;
foreach(
$styles[0] as $key => $val){
$val = preg_replace(“/</”,“&lt;”,$val);
echo
“<li>” . htmlentities($val) . “</li>”;
}
echo
“<div class=\”notice\”>Your document uses inline styles. If applicable, try to put them into a separate CSS file and restyle them to ID’s or CLASSES.</div></ul>”;
}else{
echo
“<br/>No inline styles used”;
}
}
?>
</body>
</html>

Headers php

Viernes, 17 de Septiembre de 2010

// See related links for more status codes

// Use this header instruction to fix 404 headers

// produced by url rewriting…

header(’HTTP/1.1 200 OK’);

// Page was not found:

header(’HTTP/1.1 404 Not Found’);

// Access forbidden:

header(’HTTP/1.1 403 Forbidden’);

// The page moved permanently should be used for

// all redrictions, because search engines know

// what’s going on and can easily update their urls.

header(’HTTP/1.1 301 Moved Permanently’);

// Server error

header(’HTTP/1.1 500 Internal Server Error’);

// Redirect to a new location:

header(’Location: http://www.example.org/’);

// Redriect with a delay:

header(’Refresh: 10; url=http://www.example.org/’);

print ‘You will be redirected in 10 seconds’;

// you can also use the HTML syntax:

// <meta http-equiv=”refresh” content=”10;http://www.example.org/ />

// override X-Powered-By value

header(’X-Powered-By: PHP/4.4.0′);

header(’X-Powered-By: Brain/0.6b’);

// content language (en = English)

header(’Content-language: en’);

// last modified (good for caching)

$time = time() - 60; // or filemtime($fn), etc

header(’Last-Modified: ‘.gmdate(’D, d M Y H:i:s’, $time).’ GMT’);

// header for telling the browser that the content

// did not get changed

header(’HTTP/1.1 304 Not Modified’);

// set content length (good for caching):

header(’Content-Length: 1234′);

// Headers for an download:

header(’Content-Type: application/octet-stream’);

header(’Content-Disposition: attachment; filename=”example.zip”‘);

header(’Content-Transfer-Encoding: binary’);

// load the file to send:

readfile(’example.zip’);

// Disable caching of the current document:

header(’Cache-Control: no-cache, no-store, max-age=0, must-revalidate’);

header(’Expires: Mon, 26 Jul 1997 05:00:00 GMT’); // Date in the past

header(’Pragma: no-cache’);

// set content type:

header(’Content-Type: text/html; charset=iso-8859-1′);

header(’Content-Type: text/html; charset=utf-8′);

header(’Content-Type: text/plain’); // plain text file

header(’Content-Type: image/jpeg’); // JPG picture

header(’Content-Type: application/zip’); // ZIP file

header(’Content-Type: application/pdf’); // PDF file

header(’Content-Type: audio/mpeg’); // Audio MPEG (MP3,…) file

header(’Content-Type: application/x-shockwave-flash’); // Flash animation

// show sign in box

header(’HTTP/1.1 401 Unauthorized’);

header(’WWW-Authenticate: Basic realm=”Top Secret”‘);

print ‘Text that will be displayed if the user hits cancel or ‘;

print ‘enters wrong login data’;

Capitalizar un string

Viernes, 23 de Julio de 2010

function Capitalizar($nombre) {

// aca definimos un array de articulos (en minuscula)

// aunque lo puedes definir afuera y declararlo global aca

$articulos = array(

‘0′ => ‘a’,

‘1′ => ‘de’,

‘2′ => ‘del’,

‘3′ => ‘la’,

‘4′ => ‘los’,

‘5′ => ‘las’,

‘6′ => ‘y’,

‘7′ => ‘i’,

);

// explotamos el nombre

$palabras = explode(’ ‘, $nombre);

// creamos la variable que contendra el nombre

// formateado

$nuevoNombre = ”;

// parseamos cada palabra

foreach($palabras as $elemento)

{

// si la palabra es un articulo

if(in_array(trim(strtolower($elemento)), $articulos))

{

// concatenamos seguido de un espacio

$nuevoNombre .= strtolower($elemento).” “;

} else {

// sino, es un nombre propio, por lo tanto aplicamos

// las funciones y concatenamos seguido de un espacio

$nuevoNombre .= ucfirst(strtolower($elemento)).” “;

}

}

return trim($nuevoNombre);

}