Por ejemplo si queremos sacar los elementos de una lista de un html:
$trozos = preg_split( "/(<li>|<\/li>)/", html_entity_decode($html));
Por ejemplo si queremos sacar los elementos de una lista de un html:
$trozos = preg_split( "/(<li>|<\/li>)/", html_entity_decode($html));
Ultimamente me estoy peleando más con Drupal 8 asi que aqui dejo una chuletero rapido:
Obtener el detalle de un nodo a partir de su id:
$node = \Drupal::entityManager()->getStorage('node')->load($id);
En caso de querer recuperar el nodo actual:
$node = \Drupal::request()->attributes->get('node');
Y a partir de ese nodo, obtener los datos:
$nid = $node->id(); $tipo = $node->getType(); $titulo = $node->getTitle(); $campo = $node->get('field_campo')->getValue()[0]['value']; $imagen = $node->field_imagen->entity->getFileUri(); // obtenerlos en un idioma especifico $titulo_ingles = $node->getTranslation('en')->getTitle();
Obtener el nombre de una taxonomía a partir de su id:
$term = \Drupal\taxonomy\Entity\Term::load($id); $taxonomia = $term->getName();
Obtener el idioma actual:
$idioma = \Drupal::languageManager()->getCurrentLanguage()->getId();
Acceder a la configuración del site, como por ejemplo para sacar el nombre de este (util si estas desarrollando un Drupal en multisite):
$site_config = \Drupal::config('system.site'); $site_name = $site_config->get('name');
Realizar una consulta a pelo en la base de datos:
// sacando varios resultados $result = db_query('SELECT name FROM s_taxonomy_term_field_data where langcode = :idioma', array(':idioma'=>'es'))->fetchAll(); // sacando un unico resultado $imagen = db_query('SELECT uri FROM s_file_managed where fid = :id', array(':id'=>$id))->fetchField();
Guardar un registro en el log (tabla watchdog de la base de datos)
// el valor 'clave_referencia_log' nos sirve para identificar el mensaje en la tabla \Drupal::logger('clave_referencia_log') ->info("Mensaje guardado en el log, llamada desde la función" . __FUNCTION__ );
La llevo usando ya hace tiempo y ni me acuerdo de donde la saque, pero funciona de mil maravillas así que aquí la dejo:
function Zip($source, $destination, $include_dir = false) { if (!extension_loaded('zip') || !file_exists($source)) { return false; } if (file_exists($destination)) { unlink ($destination); } $zip = new ZipArchive(); if (!$zip->open($destination, ZIPARCHIVE::CREATE)) { return false; } $source = str_replace('\\', '/', realpath($source)); if (is_dir($source) === true) { $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); if ($include_dir) { $arr = explode("/",$source); $maindir = $arr[count($arr)- 1]; $source = ""; for ($i=0; $i < count($arr) - 1; $i++) { $source .= '/' . $arr[$i]; } $source = substr($source, 1); $zip->addEmptyDir($maindir); } foreach ($files as $file) { $file = str_replace('\\', '/', $file); // Ignore "." and ".." folders if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) ) continue; $file = realpath($file); if (is_dir($file) === true) { $zip->addEmptyDir(str_replace($source . '/', '', $file . '/')); } else if (is_file($file) === true) { $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); } } } else if (is_file($source) === true) { $zip->addFromString(basename($source), file_get_contents($source)); } return $zip->close(); }
Su uso es muy sencillo:
Zip('/ruta/carpeta/origen','/ruta/archivo.zip',true);
El último argumento (true/false) sirve para indicarle a la función si queremos crear dentro del zip la carpeta origen o solo el contenido de ella