FRIHOSTFORUMSSEARCHFAQTOSBLOGSDIRECTORY
You are invited to Log in or Register a Frihost Account!

[help][php] Ayuda con las cadenas

 


SoutlinK
Bueno, pues es una duda que llevo mucho tiempo intentando aclarar, pero me e safado como e podido.

Veamos, como todos supongo que sabreis existes algunas funciones tales como preg_match() o preg_replace() que lo que hacen es buscar dentro de una cadena coincidencias. (Una solo busca, la otra remplaza).

Bueno hasta ahí esta todo claro.

Pero que pasa si quiero buscar coincidencias dentro de una cadena de forma parcial.

Por ejemplo.

Tengo la siguiente cadena en un archivo html.

Code:
<!-- IF S_VARIABLE=="resultado" --><div>$s_variable = resultado</div><!-- ENDIF -->


Quiero hacer una busqueda en esta cadena de tal forma que me devuelva por ejemplo una variable $resultado (se que lo puedo hacer con preg_match_all) de tipo array con los siguientes resutlados

Code:
$resultado[0] = IF
$resultado[1] = S_VARIABLE=="resultado"
$resultado[2] = <div>$s_variable = resultado</div>
$resultado[3] = ENDIF


es decir, para aclararme utilizo un ejemplo de la propia pagina de php.

Code:

preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
    "<b>ejemplo: </b><div align=left>esta es una prueba</div>",


Quiero saber que significa exactamente:
Code:
|<[^>]+>(.*)</[^>]+>|U


Y de que mas formas puedo utilizar estes caracteres.

Os lo agradecería.

Un saludo
n3k0
Es una expresión regular, para tener una noción básica de expresiones regulares puedes consultar la wikipedia: http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular o si pones expresiones regulares en tu buscador favorito seguro que te salen infinidad de páginas llenas de información útil.
SoutlinK
Igual me podeis ayudar mas especificamente.

Que exprresion regular tengo que usar para encontrar algo como esto.

tengo la siguiente cadena

Code:

muchotexto texto texto o etiquetas html <div>texto</div>
<!-- PHP if $algo == "algo" { -->

<div>mas texto texto texto</div>


Quiero extraer exactamente el codigo

Code:
if $algo == "algo"


Quien dice ese otro parecido, es decir cualquier codigo php, ya tengas expacios caracteres raros, etc.

Alguna ayuda??
fribos
Buenas, como va todo....

dejame ver si entendi, queres extraer toda linea de codigo que se encuentre entre las etiquetas de php

Code:
<!-- PHP XXXXXXXXXXX -->  o <?php XXXXXXXXXXXXXXXXXXXX ?>


Tengo un codigo que te va a ayudar bastante, lo encontre tratando de hacer un editor bbcode, por lo tanto este codigo lo que hace es reemplazar una cadena "Bold Text" por otra asi "<strong>Bold Text</strong>"


Code:
<?php
function bbc($str) {
  $simple_search = array(
    '/\[b\](.*?)\[\/b\]/is',                               
    '/\[i\](.*?)\[\/i\]/is',                               
    '/\[u\](.*?)\[\/u\]/is',
    '/\[s\](.*?)\[\/s\]/is',
    '/\[url\]((http:\/\/|ftp:\/\/|https:\/\/|ftps:\/\/).*?)\[\/url\]/is',
    '/\[url="?((http:\/\/|ftp:\/\/|https:\/\/|ftps:\/\/).*?)"?\](.*?)\[\/url\]/is',
    '/\[code\](.*?)\[\/code\]/is',
    '/\[quote\](.*?)\[\/quote\]/is',
    '/\[quote from="?(.*?)"?\](.*?)\[\/quote\]/is',
    '/\[br\]/is',
    '/\[hr\]/is',
    '/\[img\]((http:\/\/|https:\/\/).*?)\[\/img\]/is',
    '/\[img="?((http:\/\/|https:\/\/).*?)"?\](.*?)\[\/img\]/is',
    '/((https?:\/\/|ftps?:\/\/)([-a-zA-Z0-9_]+\.)*[-a-zA-Z0-9_]+\.[-a-zA-Z0-9_]{2,6}(\/[^\s]*)*)(?=\s|$)/is'
  );
  $simple_replace = array(
    '<strong>$1</strong>',
    '<em>$1</em>',
    '<span style="text-decoration: underline;">$1</span>',
    '<del>$1</del>',
    '<a href="$1">$1</a>',
    '<a href="$1">$3</a>',
    '<div class="code"><p>$1</p></div>',
    '<p style="font-weight: bold; padding: 0px; margin: 0px;">Quote:</p><blockquote style="padding: 0px; margin: 0px;">$1</blockquote>',
    '<p style="font-weight: bold; padding: 0px; margin: 0px;">Quote from $1:</p><blockquote style="padding: 0px; margin: 0px;">$2</blockquote>',
    '<br />',
    '<hr />',
    '<img src="$1" alt=""/>',
    '<img src="$1" alt="$3"/>',
    '<a href="$1">$1</a>'
  );
  // Do simple BBCode's
  $str = preg_replace($simple_search, $simple_replace, $str);
   
  $str = strtr($str, array("\n" => "<br />"));
  return $str;
}


Fuente Original: http://www.110mb.com/forum/script-bbcode-t34695.0.html

Tampoco entiendo del todo las barras y contra barras feas esas, pero en este ejemplo se deja entender un poco mas que con el ejemplo de la web oficial de php.

tambien estaria bueno que expliques un poco mas que es lo que realmente queres hacer.

si es una especie de editor o algo asi, conviene hacerlo con javascript ya que todos estos algoritmos serian ejecutados por la maquina del usuario, y no por el servidor.

y si me pueden ayudar con el editor tambien por favor, que me esta sacando la cabeza...
Mamsaac
La verdad no me siento como para ponerme a escribir expresiones regulares, perdón por mi poco espíritu de ayuda, pero son muy útiles. De hecho ando haciendo un proyecto usando flex, que es puro manejo de expresiones regulares, y bison. Ponte a leer... para generar una buena expresión regular, dependiendo de la complejidad del asunto, se pueden requerir varios pasos... Hay expresiones regulares verdaderamente complejas =P

Lee al respecto si de verdad te interesa.

Y otra cosa, no recomiendo el manejo de tags que estas usando, mejor ve por lo "oficial" para el uso de PHP, ya que así aseguras portabilidad de tu código. <?php para abrir y ?> para cerrar.
davidag
Los caracter "comodin" de las expresiones regulares así como todos los parámetros que le tienes que pasar a una determinado función deberías mirarlos en la referencia del lenguaje que estás utilizando (en este caso php).

Al final es sencillo, simplemente mirar la ayuda y no querer "inventar la pólvora" de nuevo.

Un saludo
Related topics

VAR - LAS CADENAS DE LOS EMAILS
[Help] Necesito ayuda con BD
ayuda con mi espacio web
[help]Ayuda con php
Ayuda con categorias y subs en PHP

Seguridad en mis scripts PHP
[help]Ayuda con php-nuke
[help] Ayuda con .htaccess
[help] Ayuda con Sony!!!
[Help] Ayuda con precargador!!

Como se usa Cpanel. Problemas con el mysql
Reglas del foro
[HELP] PHP -> Scripting
Needing a Bit Og Help {PHP}!
need some help - php switch code
Reply to topic    Frihost Forum Index -> Language Forums -> Spanish

FRIHOST HOME | FAQ | TOS | ABOUT US | CONTACT US | SITE MAP
© 2005-2007 Frihost, forums powered by phpBB.