PHP - PHP Parse Error: Unexpected - ¿Hay solución?

   
Vista:

PHP Parse Error: Unexpected - ¿Hay solución?

Publicado por Herold (7 intervenciones) el 08/06/2016 12:30:06
Estoy programando una web con sus productos y varias cosas a medida. La cosa es que no hay errores salvo que a veces, con un salto de linea de más o un espacio, rompe por completo la web.

Hay funciones, condiciones y bucles con espacios antes de las llaves y no da errores, sin embargo en lineas muy especificas, sí que sucede y acaba reventando. O bien por poner un espacio o por pulsar dos veces enter y empezar una linea nueva después de dos saltos.

¿Cómo es esto posible? ¿Qué solución existe?

No entiendo nada, la verdad!

Especifico:

Uso un VPS compartido, Debian con Apache y PHP5.
Se está programando en un Wordpress en utf8.

1
[error] [client 00.000.000.000] PHP Parse error:  syntax error, unexpected '{' in /carpeta/hacia/el/tema-child/functions.php on line 1825

La linea 1825 corresponde a un if

1
if($html != '') { $html = ''; } else { $html = ''; } // Aquí va la Imagen Destacada. Condición que da problemas.

Que se soluciona juntando las llaves

1
if($html != ''){ $html = ''; }else{ $html = ''; } // Aquí va la Imagen Destacada. Condición que da problemas.

Y la función entera es esta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function recogerExtras() {
 
	$html = ''; $htmlExtra = ''; $htmlExtra2 = ''; $htmlExcursiones = ''; $terminos = '';
	$id_producto = get_the_ID();
 
	$matriz = new WC_Product($id_producto);
	$vinculados = $matriz->get_cross_sells();
 
	$extras = new WP_Query(array('post_type' => 'product', 'post__in' => $vinculados));
 
	foreach($extras->posts as $extra) {
 
		$terminos = get_the_terms($extra->ID, 'product_cat');
		if($terminos[0]->slug == 'seguros') {
			$htmlExtra .= '<div class="card_extra">';
				if($html != '') { $html = ''; } else { $html = ''; } // Aquí va la Imagen Destacada. Condición que da problemas.
 
				$htmlExtra .= '<div><img src="'.get_stylesheet_directory_uri().'/img/no-image.png"></div>';
				$htmlExtra .= '<div class="content"><h4>'.$extra->post_title.'</h4><div><input type="radio" value="'.$extra->ID.'" name="seguros"> Adquirir este seguro</div></div>';
			$htmlExtra .= '</div>';
		} else if($terminos[0]->slug == 'extras') {
			$htmlExtra2 .= '<div class="card_extra">';
 
				$htmlExtra2 .= '<div><img src="'.get_stylesheet_directory_uri().'/img/no-image.png"></div>';
				$htmlExtra2 .= '<div class="content"><h4>'.$extra->post_title.'</h4><div><input type="checkbox" value="'.$extra->ID.'" name="extras"> Adquirir este extra</div></div>';
			$htmlExtra2 .= '</div>';
		} else if($terminos[0]->slug == 'excursiones') {
			$htmlExcursiones .= '<div class="card_extra">';
 
				$htmlExcursiones .= '<div><img src="'.get_stylesheet_directory_uri().'/img/no-image.png"></div>';
				$htmlExcursiones .= '<div class="content"><h4>'.$extra->post_title.'</h4><div><input type="checkbox" value="'.$extra->ID.'" name="excursiones"> Adquirir este seguro</div></div>';
			$htmlExcursiones .= '</div>';
		}
 
	}
 
	$html .= '<div class="vc_col-sm-12">';
		$html .= '<div class="vc_col-sm-4"><h4 style="text-align:center;">Seguros</h4>'.$htmlExtra.'</div>';
		$html .= '<div class="vc_col-sm-4"><h4 style="text-align:center;">Extras</h4>'.$htmlExtra2.'</div>';
		$html .= '<div class="vc_col-sm-4"><h4 style="text-align:center;">Excursiones</h4>'.$htmlExcursiones.'</div>';
	$html .= '</div>';
 
	//return '<pre>'.print_r($extras->posts).'</pre>';
	return $html;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

PHP Parse Error: Unexpected - ¿Hay solución?

Publicado por DAVID (129 intervenciones) el 08/06/2016 17:35:10
Hola,
Hay validadores de codigo online para detectar ese tipo de errores. Yo acabo de meter tu código en:

https://es.piliapp.com/php-syntax-check/
http://phpcodechecker.com/
Y no me ha dado ningún problema.

¿Has probado a instalartelo en local? Así sabrías, si es problema de programación, o tiene que ver con el servidor.

Un saludo,
David
estudio de diseño grafico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PHP Parse Error: Unexpected - ¿Hay solución?

Publicado por Herold (7 intervenciones) el 09/06/2016 15:51:25
No es problema de la programación porque no tendría sentido. Tampoco creo que sea cosa del servidor porque hay ficheros que sí lo leen perfectamente y líneas de ese mismo código que funcionan. Es solo esa linea, sin ningún motivo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

PHP Parse Error: Unexpected - ¿Hay solución?

Publicado por xve (5522 intervenciones) el 08/06/2016 17:40:10
Hola Herold, si lo pones en varias lineas, te da el error?

algo así:
1
2
3
4
5
6
if($html != '')
{
    $html = '';
}else{
    $html = '';
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PHP Parse Error: Unexpected - ¿Hay solución?

Publicado por Herold (7 intervenciones) el 09/06/2016 15:50:01
Sí, me devuelve el mismo error. Es como si no reconociera nada que no estuviera pegado a los parentesis.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco Javier

PHP Parse Error: Unexpected - ¿Hay solución?

Publicado por Francisco Javier (2 intervenciones) el 10/06/2016 12:59:38
Hola, Herold.
Yo tuve este mismo problema y, como tú, estuve dando vueltas buscando dónde podría estar el error. Al final resultó que el fichero PHP no podía tener ningún caracter (ninguno, ni siquiera espacios o intros) al principio. Lo hice y el porcentaje de errores se redujo, pero no desapareció.
Entonces me di cuenta, de rebote, que algunos ficheros de código fuente habían sido grabados en formato UTF-8 y otros en ANSI. Los ANSI, cuando los visualizabas con un type desde msdos, tenían un caracter extraño al principio (creo que era un corazón o un trébol) y ÉSTOS eran los que fallaban.
Los grabé en formato UTF-8 y listo.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar