Problema con explode y php

Desde
3 Feb 2010
Mensajes
377
Hola gente!

Ando teniendo un problema con un string y explode

Aca les dejo mi codigo

PHP:
$teclas = A+B,Saltar-V+H,Saltar-C+D,Saltar;

$teclasexplode = explode('-',$teclas);

foreach ($teclasexplode as $teclasind) {
$salida[] = explode(',',$teclasind); }

foreach( $salida as $s ) {
if { aca va una serie de ifs }
elseif (strstr($s[0], '+'))
{ $salida5[] = explode("+",$s[0]);	
foreach( $salida5 as $sssss.'<br />'; ) { echo '
'.$sssss[0].' + '.$sssss[1]; } }

El output que me queda es
A + B
A + B V + H
A + B V + H C + D

Y yo necesitaria que quede
A + B
V + H
C + D

Y no entiendo porque hace loop desde le principio.
 

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
Hola gente!

Ando teniendo un problema con un string y explode

Aca les dejo mi codigo

PHP:
$teclas = A+B,Saltar-V+H,Saltar-C+D,Saltar;

$teclasexplode = explode('-',$teclas);

foreach ($teclasexplode as $teclasind) {
$salida[] = explode(',',$teclasind); }

foreach( $salida as $s ) {
if { aca va una serie de ifs }
elseif (strstr($s[0], '+'))
{ $salida5[] = explode("+",$s[0]);	
foreach( $salida5 as $sssss.'<br />'; ) { echo '
'.$sssss[0].' + '.$sssss[1]; } }

El output que me queda es


Y yo necesitaria que quede


Y no entiendo porque hace loop desde le principio.

no se para que tanto lio... no entiendo porque tantos bucles... si ya le metiste un explode a los - y dsp a las , listo... para que un explode a las +....

PHP:
<?php
	$teclas = "A+B,Saltar-V+H,Saltar-C+D,Saltar";
	$A = explode('-',$teclas);
	foreach($A as $B){
		$C[] = explode(',',$B);
	}
	foreach($C as $D){
		echo str_replace('+',' + ',$D[0]).'<br/>';
	}
?>

el str_replace('+',' + '... es para meter un espacio entre el mas... pero funciona sin eso (es por la forma de tu code, que veo que metes un espacio)...
 

NicDam

Gamma
Desde
3 Feb 2010
Mensajes
377
Tu solucion no me sirve por el hecho de que necesito meter HTML entre el array para poder darle CSS al mismo.

Quizas si me explico un poco, me puedas ayudar mejor.

Primero que nada, no se mucho de PHP, asi que hago las cosas "como salen" :p

Tengo un sitio de juegos y uso WP. Para poner las teclas con que se juega dicho juego, uso un custom field llamado "teclas" donde meto los datos de la siguiente forma:
PHP:
$ejemplo1 = "mouse1,Disparar-mouse2,Mirar alrededor-mousemove,Moverse-E,Accion 1-B,accion 2-C,accion 3-WASD,Movimiento-ASD,Test varias teclas-&rarr;&larr;,Disparar-bar,Saltar-&uarr;&darr;,test-A+B,Algo-V+H,Otra cosa-C+D,Otra cosa";

Tengo 5 condiciones:
- Si es mouse 1, mouse2, bar (barra espaciadora), mousemove (mover mouse) > if 1
- Si es combinacion de teclas, por ejemplo A+B > elseif 2
- Si es una tecla "especial", por ejemplo &rarr; (esto lo hice asi porque no se me ocurria otra forma) > elseif 3
- Si es una mas de una tecla > elseif 4
- Otras, por ejemplo una sola tecla > elseif 5

Cada imagen es de fondo que viene del CSS (por eso hago tanto lio)

PHP:
# Mostramos teclas si estan puestas.
								if ($teclas != '') { 

								# Separa las secciones que estan delimitadas por guion.
								$teclasexplode = explode('-',get_post_meta($post->ID, 'teclas', true));

								# Separa los elementos segun el orden en el que estan por coma.
								foreach ($teclasexplode as $teclasind) {
								$salida[] = explode(',',$teclasind); }

								# Hacemos echo de todas las teclas con el formato correcto
								foreach( $salida as $s ) {
									if ($s[0] == 'mouse1' || $s[0] == 'mouse2' || $s[0] == 'mousemove' || $s[0] == 'bar' )  // Mouse left click, mouse right click, mouse move and space bar
																	{ echo '<div class="key_wr"><div class="key '.$s[0].'"></div><span>'.$s[1].'</span></div>'; } 		
									elseif (strstr($s[0], '+'))		{ $salida5[] = explode("+",$s[0]);																	// Arrows
																	echo '<div class="key_wr">';	
																	foreach( $salida5 as $sssss ) { echo '
																	'.$sssss[0].' + '.$sssss[1].'<br />'; } 
																	echo '</div>';}					
									elseif (strstr($s[0], '&')) 	{ $salida4 =  str_split($s[0], 6);																	// Arrows
																	echo '<div class="key_wr">';	
																	foreach( $salida4 as $ssss ) { echo '
																	<div class="key anykey">'.$ssss.'</div>'; }
																	echo '<span>'.$s[1].'</span></div>'; }
									elseif (strlen($s[0]) >= '2')	{ $salida3 = str_split($s[0]); 																	 	// KeyS
																	echo '<div class="key_wr">';
																	foreach( $salida3 as $sss ) { echo '
																	<div class="key anykey">'.$sss.'</div>'; }
																	echo '<span>'.$s[1].'</span></div>'; }
									else {							echo '<div class="key_wr"><div class="key anykey">'.$s[0].'</div><span>'.$s[1].'</span></div>'; }	 // Key
									} 
									echo '<div class="clear"></div>'; }

El echo de todo ese quilombo deberia ser algo asi (estan todas bien salvo por la parte de combinacion de teclas que es lo que no me sale y el motivo de este post)

x3wgu1.jpg


Espero se entienda mejor ahora je.

Gracias!
 

fisasti

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
11 Jun 2013
Mensajes
97
Así conseguirás el output que quieres. Primero partes la cadena con los "-". Luego, por cada parte, imprimes el principio de la cadena hasta la primera coma. Para esto, usas substr.

Insertar CODE, HTML o PHP:
$teclas = A+B,Saltar-V+H,Saltar-C+D,Saltar; 

$teclasexplode = explode('-',$teclas); 

foreach ($teclasexplode as $str)
     echo substr($str, 0, strpos($str, ',')) . '<br />';
 
Arriba