Foros del Web » Programando para Internet » PHP »

no consigo quitar un salto de línea muy feo

Estas en el tema de no consigo quitar un salto de línea muy feo en el foro de PHP en Foros del Web. Hola. Estoy tratando de hacer un cancionero para guitarra en wordpress y por suerte hay un plugin perfecto que permite colocar notas y luego subirlas ...
  #1 (permalink)  
Antiguo 16/06/2011, 10:26
Avatar de senioman  
Fecha de Ingreso: mayo-2004
Mensajes: 13
Antigüedad: 19 años, 11 meses
Puntos: 1
no consigo quitar un salto de línea muy feo

Hola. Estoy tratando de hacer un cancionero para guitarra en wordpress y por suerte hay un plugin perfecto que permite colocar notas y luego subirlas o bajarlas de tono.

El problema es que aunque la canción se introduce de esta manera
[a] mi carro [bm] me lo ro[a]baron

En pantalla se presenta

a bm a
Mi carro me lo robaron

Sin embargo, aunque pueda parecer una maravilla, al copiar de la web a un documento de texto, el resultado es:

a
mi carro
bm
me lo ro
a
baron

Vamos, un estropicio. La cosa es que en algún punto del código php introduce un salto de línea, un corte... y por más que miro no encuentro nada. He de decir también, que para mí, mirar php es como ver un cuadro de Rothko, que veo los colores, pero poco más. Si por favor me pudiérais echar una mano, os estaría muy agradecido.

Lo único que quiero conseguir es mostrar en la misma línea el texto que las notas
a mi carro bm me lo roabaron

Dejo a continuación la parte en la que creo que está el formateo de texto. He jugado con los /n, quitado estilos inline css y nada de nada.

Un saludo y GRACIAS!

Código PHP:
Ver original
  1. //************************
  2.     // FORMAT AND DISPLAY LINE
  3.     //************************
  4.     public function FormatAndDisplayLine ( $line, $lineNum = -1)
  5.     {
  6.         $returnText = "";
  7.         $arrChords = array();   // Array of chords
  8.         $arrLyrics = array();   // Array of corresponding lyrics starting at a chord
  9.                                 // and ending prior to the next chord or the end-of-line.
  10.        
  11.         // Split each line into separate chords and lyrics lines
  12.         if(substr_count($line,"[") == 0){   //Are there no chords on this line?
  13.             $arrLyrics[] = $line;
  14.        
  15.         // Is there an unmatched number of square brackets?
  16.         }else if(substr_count($line,"[") != substr_count($line,"]")){
  17.             // If so, flag the error
  18.             $arrLyrics[] = "Unmatched square brackets: " . $line . "<br />";   
  19.            
  20.         }else{
  21.             //Split line into segments beginning with '['
  22.             $arrBracketSegments = explode("[",$line);
  23.             foreach($arrBracketSegments as $segment){
  24.                 $pad = ($segment[strlen($segment)-1]==' ') ? '&nbsp;' : '';
  25.                 // Does the first segment start before the 1st '['?
  26.                 if(substr_count($segment,"]")==0){
  27.                     $arrChords[] = " ";
  28.                     $arrLyrics[] = $segment . $pad;
  29.                 }else{
  30.                     // Now process all the segments beginning with '['
  31.                     $arrChordLyric = explode("]",$segment);
  32.                     $arrChords[] = trim($arrChordLyric[0]);
  33.                     $arrLyrics[] = $arrChordLyric[1] . $pad;
  34.                 }
  35.             }
  36.         }
  37.  
  38.         // Display a line of chords and text.
  39.         $returnText .= '<div class="cnl_line">';
  40.        
  41.         // Align chords and lyrics together by wrapping each in a floating inline div
  42.         if(!$this->lyricsOnly){
  43.             //$numChars = 0;
  44.             for($i=0; $i<count($arrChords); $i++){
  45.                 if(strlen(trim($arrChords[$i])) > 0
  46.                 || strlen(trim($arrLyrics[$i]))>0){
  47.                     $lyrics = trim($this->RemoveHtmlStuff($arrLyrics[$i]));
  48.                     $returnText .= '<div class="cnl"><div class="chord"><strong>';
  49.                     if(strlen(trim($arrChords[$i])) > 0){
  50.                         $returnText .= $this->FormatChord($arrChords[$i]);
  51.                         $returnText .= '</strong>&nbsp;</div>';     // End of chord
  52.                         $returnText .= '<div class="lyric">';
  53.                         if(strlen($lyrics)>0){
  54.                             $endOf1stWord = strpos($lyrics,' ');
  55.                             $numSpaces = substr_count($lyrics,' ');
  56.                             if($endOf1stWord>0 && $numSpaces==1){
  57.                                 $returnText .= substr($lyrics,0,$endOf1stWord) . '&nbsp;';
  58.                                 $lyrics = substr($lyrics,$endOf1stWord);
  59.                                 $returnText .= '</div></div><div class="cnl"><div class="chord">&nbsp;</div><div class="lyric">';
  60.                             }
  61.                         }
  62.                     }else{
  63.                         $returnText .= '</strong>&nbsp;</div>';     // End of chord
  64.                         $returnText .= '<div class="lyric">';
  65.                     }
  66.                     if(strlen($lyrics) > 0){
  67.                     } //else $returnText .= '<p class="lyrics"><br /></p>';
  68.                     $returnText .= "</div></div>\n";    // End of lyric and chordlyric
  69.                 }
  70.             }
  71.             for($i=count($arrChords); $i<count($arrLyrics); $i++){
  72.                 $returnText .= $arrLyrics[$i];
  73.             }
  74.         }else{      // Show lyrics only
  75.             $returnText .= '<div class="cnl"><div class="lyric">';
  76.             for($i=0; $i<count($arrLyrics); $i++){
  77.                 $returnText .= $arrLyrics[$i];
  78.             }
  79.             $returnText .= "</div></div>";
  80.         }
  81.         $returnText .= "</div><div class='cnl_clear'></div>\n";     // End of cnl_line
  82.         return $returnText;
  83.     }
  84.    
  85.     private function RemoveHtmlStuff($string){
  86.         $retString = "";
  87.         $isVisible = true;
  88.         for($i = 0; $i < strlen($string); $i++){
  89.             if($isVisible){
  90.                 if($string[$i]=='<') $isVisible = false;
  91.                 else $retString .= $string[$i];
  92.             }else if($string[$i]=='>') $isVisible = true;
  93.         }
  94.         return $retString;
  95.     }
  #2 (permalink)  
Antiguo 16/06/2011, 10:48
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: no consigo quitar un salto de línea muy feo

el problema esta en los \n

quitalos de a uno y probá
__________________
la la la
  #3 (permalink)  
Antiguo 16/06/2011, 10:58
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: no consigo quitar un salto de línea muy feo

De verdad quieres mstrarlos en una sola linea?

yo como aficionado de la guitarra odiaría un cancionero que se viera así.
  #4 (permalink)  
Antiguo 16/06/2011, 11:15
Avatar de senioman  
Fecha de Ingreso: mayo-2004
Mensajes: 13
Antigüedad: 19 años, 11 meses
Puntos: 1
Respuesta: no consigo quitar un salto de línea muy feo

Cita:
Iniciado por truman_truman Ver Mensaje
el problema esta en los \n

quitalos de a uno y probá
Los he quitado de uno en uno y todos al mismo tiempo pero sigue saliendo todo en columna :(
  #5 (permalink)  
Antiguo 16/06/2011, 11:17
Avatar de senioman  
Fecha de Ingreso: mayo-2004
Mensajes: 13
Antigüedad: 19 años, 11 meses
Puntos: 1
Respuesta: no consigo quitar un salto de línea muy feo

Cita:
Iniciado por memoadian Ver Mensaje
De verdad quieres mstrarlos en una sola linea?

yo como aficionado de la guitarra odiaría un cancionero que se viera así.
Totalmente de acuerdo. Es que no lo he dicho todo. El siguiente paso sería poder meter las canciones con los acordes en una línea y los versos en la inferior, todo ello en una tipografía monoespaciada para que no se muevan de su sitio.

Eso ya lo hacía el plugin, sí, pero al copiar a un archivo de texto se descojonaba todo, de ahí el cambio, pero de momento se resiste el código.

Un saludo
  #6 (permalink)  
Antiguo 16/06/2011, 11:18
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: no consigo quitar un salto de línea muy feo

entonces el problema será que los resultados se imprimen entre etiquetas div o table o lo que sea, tendrías que hacer que no tenga etiquetas
__________________
la la la
  #7 (permalink)  
Antiguo 16/06/2011, 14:42
Avatar de senioman  
Fecha de Ingreso: mayo-2004
Mensajes: 13
Antigüedad: 19 años, 11 meses
Puntos: 1
Respuesta: no consigo quitar un salto de línea muy feo

Cita:
Iniciado por truman_truman Ver Mensaje
entonces el problema será que los resultados se imprimen entre etiquetas div o table o lo que sea, tendrías que hacer que no tenga etiquetas
Efectivamente, parece que ahí está el problema. Creo que tendré que jugar con algunas cuestiones de estilo pero solucionado. Muchas gracias!

Etiquetas: quitar, salto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:15.