Eliminar subcadenas a partir de un caracter determinado

CristJian Seguir

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
Hola amigos, buenas.

Tengo un problemita, estoy tratando de hacer lo siguiente:

De un formulario envío a otro la siguiente información de ejemplo

"Problema 1: si pepito tiene 53 manzanas y 23 naranjas..."
-área matemática
"La oración tiene sujeto y predicado... etc"
-área lingüística
"Cualquier otra cosa que se les ocurra..."
-otra cosa cualquiera

Lo que estoy tratando de hacer es eliminar las comillas "" y separando por renglones la información, por el momento ya pude eliminar todas las comillas que encuentra, el problema que no puedo hacer es que al momento de dividir la información no puedo eliminar toda la subcadena que comienza a partir del guión ya separada, al momento este es el código que tengo y he probado:

PHP:
$text = $_POST['informacion'];

if ($text) {
  //eliminar comillas
  $comillas = array("“", "”");
  $resultado = str_replace($comillas, "", $text);
} 

if ($resultado) {
    //eliminar subcadena
  $caracter = "―"; 
  $posicion = strpos($resultado, $caracter);
  $dominio = substr($resultado, ($posicion+1), -1 ); 
  //dividir texto
  $texto = preg_split('/\n|\r/', $resultado, -1, PREG_SPLIT_NO_EMPTY);
}
?>

img01.pngimg02.png
La primera parte si funciona la que elimina las comillas, el problema viene a partir del segundo o no sé bien cómo hacerlo para que primero se separe la información y luego elimine lo que no quiero (la subcadena incluyendo el guión para que no cuente como información a ingresar). Si me pueden agregar por skype cristjian1, o si saben de algún método mejor para hacerlo me sería de gran ayuda amigos.

Saludos cordiales y gracias de antemano :p8:
 
Última edición:

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
968
mmm usa preg_replace("|-(.*)\n|i","",$resultado);

eso elimina lo que comienza con - luego cualquier texto y termina en un salto de linea...
 

CristJian

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
Hola cicklow, saludos nuevamente... gracias por ayudarme en un tema anterior :)

Estoy intentando modificar el script usando preg_replace pero sigue sin modificarlo, disculpa mi ignorancia ya que soy relativamente nuevo en php :ambivalence: pero ¿exactamente en qué lugar debo ponerlo?
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
968
Hola cicklow, saludos nuevamente... gracias por ayudarme en un tema anterior :)

Estoy intentando modificar el script usando preg_replace pero sigue sin modificarlo, disculpa mi ignorancia ya que soy relativamente nuevo en php :ambivalence: pero ¿exactamente en qué lugar debo ponerlo?

PHP:
<?php
$text = $_POST['informacion'];

if ($text) {
  //eliminar comillas
  $comillas = array("“", "”");
  $resultado = str_replace($comillas, "", $text);
} 
$resultado = preg_replace("|-(.*)\n|i","",$resultado);

if ($resultado) {
    //eliminar subcadena
  $caracter = "―"; 
  $posicion = strpos($resultado, $caracter);
  $dominio = substr($resultado, ($posicion+1), -1 ); 
  //dividir texto
  $texto = preg_split('/\n|\r/', $resultado, -1, PREG_SPLIT_NO_EMPTY);
}
?>

asi :encouragement:
 

CristJian

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
Muchas gracias cicklow!!! Eres mi heroe!! jejeje :angel1:

Funciona a la perfección excepto por que queda 1 adicional en el resultado, osea se eliminan todas, menos la última. ¿Qué faltaría por modificar?
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
968
Muchas gracias cicklow!!! Eres mi heroe!! jejeje :angel1:

Funciona a la perfección excepto por que queda 1 adicional en el resultado, osea se eliminan todas, menos la última. ¿Qué faltaría por modificar?

mmm hace asi, le agrego un salto de linea al texto, asi puede eliminar el ultimo.
PHP:
<?php
$text = $_POST['informacion']."\n"; //agregar salto de linea

if ($text) {
  //eliminar comillas
  $comillas = array("“", "”");
  $resultado = str_replace($comillas, "", $text);
} 
$resultado = preg_replace("|-(.*)\n|i","",$resultado);

if ($resultado) {
    //eliminar subcadena
  $caracter = "―"; 
  $posicion = strpos($resultado, $caracter);
  $dominio = substr($resultado, ($posicion+1), -1 ); 
  //dividir texto
  $texto = preg_split('/\n|\r/', $resultado, -1, PREG_SPLIT_NO_EMPTY);
}
?>
 

ubuwolf

Iota
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
30 Nov 2011
Mensajes
2.148
[MENTION=9679]cicklow[/MENTION] se puede remplazar el caracter por varios ? onda www??
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
968
[MENTION=9679]cicklow[/MENTION] se puede remplazar el caracter por varios ? onda www??

yo lo reemplace por vacio (nada)... podes colocarle lo que quieras.. PHP: preg_replace - Manual el preg es para usar expresiones regulares, sino podes usar str_replace (para reemplazar una cadena por otra)
 

CristJian

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
Que genial que eres hermano!!! :welcoming: me has ayudado la vida!!! en serio a mi me gusta aprender todo esto de programación, y pasé toda la tarde buscando documentación pero no me daba la cabeza para poder terminarlo pero gracias a tu ayuda funcionó a la perfección!! :love_heart:

Muchas gracias amigo. :encouragement:

¿Me recomendarías algún libro para aprender bien php?
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
968
Que genial que eres hermano!!! :welcoming: me has ayudado la vida!!! en serio a mi me gusta aprender todo esto de programación, y pasé toda la tarde buscando documentación pero no me daba la cabeza para poder terminarlo pero gracias a tu ayuda funcionó a la perfección!! :love_heart:

Muchas gracias amigo. :encouragement:

¿Me recomendarías algún libro para aprender bien php?
mmm no tengo idea, siempre he usado el sitio php.net o el buscador jejej (stackoverflow.com ayuda siempre)... sino buscar en ingles, eso salva siempre...
 

CristJian

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
jaja gracias mi amigo, si hago eso también sólo que por novato no me oriento bien aún cómo hacerlo correctamente del todo; por cierto, ¿el código que está puesto está bien o se puede borrar algo que esté innecesariamente?
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
968
jaja gracias mi amigo, si hago eso también sólo que por novato no me oriento bien aún cómo hacerlo correctamente del todo; por cierto, ¿el código que está puesto está bien o se puede borrar algo que esté innecesariamente?

PHP:
<?php
$text = $_POST['informacion']."\n"; //agregar salto de linea

if ($text) {
  //eliminar comillas
  $comillas = array("“", "”");
  $resultado = str_replace($comillas, "", $text);
} 
if ($resultado) {
  //eliminar subcadena
  $resultado = preg_replace("|-(.*)\n|i","",$resultado);

  //dividir texto
  $texto = preg_split('/\n|\r/', $resultado, -1, PREG_SPLIT_NO_EMPTY);
}
?>
solo le sacamos el code anterior ke tenias...
 

CristJian

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
Muchas gracias amigo, me has ayudado bastante esta noche (acá en Ecuador) jeje

Saludos, un abrazo. :encouragement:
 
Última edición:

CristJian

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
PHP:
<?php
$text = $_POST['informacion']."\n"; //agregar salto de linea

if ($text) {
  //eliminar comillas
  $comillas = array("“", "”");
  $resultado = str_replace($comillas, "", $text);
} 
if ($resultado) {
  //eliminar subcadena
  $resultado = preg_replace("|-(.*)\n|i","",$resultado);

  //dividir texto
  $texto = preg_split('/\n|\r/', $resultado, -1, PREG_SPLIT_NO_EMPTY);
}
?>
solo le sacamos el code anterior ke tenias...

Hola cicklow,

Disculpa una última pregunta, cómo podré cambiar el script para seleccionar otro símbolo aparte del guión, por ejemplo corchetes o llaves [] {}?
que se elimine a partir del primer corchete que encuentre, etc.

Saludos :)
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
968
Hola cicklow,

Disculpa una última pregunta, cómo podré cambiar el script para seleccionar otro símbolo aparte del guión, por ejemplo corchetes o llaves [] {}?
que se elimine a partir del primer corchete que encuentre, etc.

Saludos :)

lo mismo con preg_replace... en la ayuda de PHP tenes mas info, osea es armar la cadena
PHP:
$resultado = preg_replace("/\[[^)]+\]/","",$resultado); //Elimina todo lo que este entre corchetes...
 

CristJian

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
lo mismo con preg_replace... en la ayuda de PHP tenes mas info, osea es armar la cadena
PHP:
$resultado = preg_replace("/\[[^)]+\]/","",$resultado); //Elimina todo lo que este entre corchetes...

Bueno, en realidad me refería como en el primer ejemplo, que se elimine todo lo que encuentre a partir del primer corchete por ejemplo, intenté modificar el script inicial cambiando el "|-(.*)\n|i" por "|[(.*)\n|i" pero me sale un error, tengo entendido que el símbolo "|" significa "o", se podrá agregar en la misma línea otro caracter adicional para que elimine todo como en el primer ejemplo?

Gracias ;)
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
968
Bueno, en realidad me refería como en el primer ejemplo, que se elimine todo lo que encuentre a partir del primer corchete por ejemplo, intenté modificar el script inicial cambiando el "|-(.*)\n|i" por "|[(.*)\n|i" pero me sale un error, tengo entendido que el símbolo "|" significa "o", se podrá agregar en la misma línea otro caracter adicional para que elimine todo como en el primer ejemplo?

Gracias ;)

el | si es o, pero es ||... y usa \[
|\[(.*)\n|i
 

CristJian

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
el | si es o, pero es ||... y usa \[
|\[(.*)\n|i

Muchísimas gracias amigo!! el problema era que no lo ingresaba comentado como texto el corchete jejeje por eso era el error, hice un array para algunos otros símbolos que no deseo, muchas gracias amigo nuevamente ;)

Saludos
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
968
Muchísimas gracias amigo!! el problema era que no lo ingresaba comentado como texto el corchete jejeje por eso era el error, hice un array para algunos otros símbolos que no deseo, muchas gracias amigo nuevamente ;)

Saludos

en realidad no es comentado... osea preg_replace o cualquera de los preg usan los ( . $ [ { etc como simbolos especiales para ellos, entonces si no vas a usarlo como simbolo especial usar la barra invertida \ para indicarle que lo tome como texto normal y no especial
 

CristJian

Beta
Verificación en dos pasos desactivada
Desde
1 Feb 2013
Mensajes
36
en realidad no es comentado... osea preg_replace o cualquera de los preg usan los ( . $ [ { etc como simbolos especiales para ellos, entonces si no vas a usarlo como simbolo especial usar la barra invertida \ para indicarle que lo tome como texto normal y no especial

muchas gracias amigo, cada vez aprendo más jeje

te sigo en tus post ;) :p8:

por cierto, según lo que entiendo |\[(.*)\n|i significa que todo (.*) lo que encuentra a partir del caracter \[ hasta un enter o nueva línea \n sería reemplazado por lo que uno quiere, pero estaba buscando en la documentación de php.net pero no encontré que significaba el "i"
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba