Ver Mensaje Individual
  #29 (permalink)  
Antiguo 10/05/2011, 16:31
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Justificacion con silabeo

Bueno estuve un rato a ver si sacaba algo, me gusto esto, traten a ver si les da algún problema.
Código PHP:
Ver original
  1. <?php
  2. $str = <<<LOREIMIPSUM
  3. Lorem ipsum dolor sit amet, <a href="#">consectetur</a> adipiscing elit. Praesent <b>ac</b> eros velit, quis ornare sapien. Donec tincidunt euismod convallis. Suspendisse cursus <a href="##########">dignissim</a> ligula sed sodales. Vivamus vitae tempor orci. Ut eros purus, vehicula ullamcorper cursus vel, sodales eget nibh. Suspendisse ullamcorper, nibh facilisis tempor tristique, metus libero luctus urna, sed hendrerit nibh neque a orci. Pellentesque quis felis vitae dolor lacinia tincidunt in at nisi. Pellentesque sed justo eros, pretium adipiscing ante. Morbi sodales mattis tristique. Praesent nulla elit, scelerisque vel luctus eu, porta non magna. Fusce dapibus porttitor leo, eget sagittis nisl ultrices vitae. Aenean vitae dolor id ipsum ultricies egestas vitae vitae enim.
  4.  
  5. Nam placerat sollicitudin laoreet. <strong>Mauris</strong> nec rhoncus mi. <a href="###############">Pellentesque</a> imperdiet turpis nunc, et convallis ipsum. Sed eget enim libero. Aliquam euismod imperdiet nibh et iaculis. Sed urna tellus, gravida eu aliquam in, consectetur ut turpis. Proin mollis ligula at nisl sagittis vel scelerisque sapien condimentum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin facilisis fermentum augue ut pharetra. Nunc non tempor mi. In hac habitasse platea dictumst. Fusce et tellus quis libero interdum accumsan. Phasellus sit amet nisl eros, facilisis dignissim purus. Donec accumsan egestas justo, vitae pellentesque erat cursus vel. Cras mi nunc, faucibus id porttitor vel, venenatis sed justo. Quisque eget sem at est pretium eleifend vehicula rutrum erat. Aliquam feugiat erat at nunc vulputate porta. Sed diam nibh, malesuada a mattis vel, varius non massa. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
  6.  
  7. Curabitur iaculis molestie eros. <a href="################################################">Suspendisse</a> potenti. <br />Sed rutrum ullamcorper arcu, eu molestie nisl suscipit ut. Etiam gravida faucibus nulla, ac commodo tellus vulputate eget. Etiam molestie pretium turpis, in rutrum libero viverra et. Donec augue ligula, dignissim viverra consequat vitae, fringilla sed ante. Aenean at nibh id urna lacinia adipiscing. Nam id leo quam. Suspendisse et felis dui. Nulla facilisi.
  8. LOREIMIPSUM;
  9.  
  10. /**
  11.  * Configuration values
  12.  */
  13. $eraseFromString = array('<br />', '°');
  14. $maxChars = 80;
  15.  
  16.  
  17. preg_match_all('/<[^>]+>(?:(.+?)<[^>]+>)?/', $str, $replaceMatch);
  18.  
  19. if(!empty($replaceMatch[0])){
  20.     foreach($replaceMatch[0] as $k => $v){
  21.         $n = '%' . ($k+1) . '$s';
  22.         $strPad = strlen($replaceMatch[1][$k]) - strlen($n);
  23.         $str = str_replace($v, $n . str_pad('', ($strPad < 0 ? 0 : $strPad), '°'), $str);
  24.     }
  25. }
  26.  
  27. preg_match_all('/(?:.+?){1,' . $maxChars . '}%?\d*?\$?s?°*[\,\.\;\:]?/i', $str, $lines);
  28.  
  29. if(!empty($lines[0])){
  30.     /**
  31.      * Another way for old versions of php
  32.      * foreach($lines[0] as $k => $v){
  33.      *     $lines[0][$k] = vsprintf($v, $replaceMatch[0]);
  34.      * }
  35.      */
  36.     foreach($lines[0] as &$v){
  37.         $v = vsprintf($v, $replaceMatch[0]);
  38.         $v = str_replace($eraseFromString, '', $v);
  39.     }
  40.     /**
  41.      * This is important, erase reference
  42.      */
  43.     unset($v);
  44. }
  45.  
  46. echo !empty($lines[0])
  47.     ? implode('<br />', $lines[0])
  48.     : $str;
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos