ok, lo logre, ya quita los enlaces y corta las lineas al superar cierta cantidad de pixels, viene la parte complicada (que tengo comentada en el siguiente código), la separación por silabas!
espero que alguien entienda el código yo creo que por hoy no puedo seguir con esto XD
Código PHP:
<font face="Verdana">
<?php
error_reporting(0);
function box($cadena){
$cadena=preg_replace('/(?:\%\d*\$s)?/i',"",$cadena);
$box=imagettfbbox("11",0,"verdana.ttf",$cadena);
return $box[2]-$box[0];
}
function escons($char){
$char=strtolower($char);
if($char=="a" or $char=="e" or $char=="i" or $char=="o" or $char=="u" or $char=="" or $char==" ")return false;
else return true;
}
function esvoc($char){
$char=strtolower($char);
if($char=="a" or $char=="e" or $char=="i" or $char=="o" or $char=="u")return true;
else return false;
}
function juntas($chars){
$chars=strtolower($chars);
$char1=substr($chars,0,1);
$char2=substr($chars,1,1);
if($char1=="h") return true;
if($char1=="b" or $char1=="c" or $char1=="d" or $char1=="f" or $char1=="g" or $char1=="j" or $char1=="k" or $char1=="p" or $char1=="q" or $char1=="t" or $char1=="v" or $char1=="x")
if($char2=="h" or $char2=="l" or $char2=="r" or $char2=="s" or $char2=="w" or $char2=="y" or $char2=="z")return true;
if($char1==$char2)
if($char1=="l" or $char1=="r")return true;
return false;
}
$str = '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.
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.
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.
LOREIMIPSUM';
$eraseFromString = array('<br />');
preg_match_all('/<[^>]+>/', $str, $replaceMatch);
if(!empty($replaceMatch[0])){
foreach($replaceMatch[0] as $k => $v){
$str = str_replace($v, '%' . ($k+1) . '$s', $str);
}
}
$texto=$str;
$w=0;
while(strlen($texto)>0){
$segmento=$texto;
if(strlen($segmento)>100) $len=100; else $len=strlen($segmento);
for($f=$len;box(substr($segmento,0,$f))>400;$f--){
}
//////////// AQUI ESTA LA SEPARACION POR SILABAS ////
/*$next="";
for($f=$f+1;$f>0;$f--){
$current=substr($segmento,$f,1);
$prev=$next=substr($segmento,$f-1,1);
$reprev=$next=substr($segmento,$f-2,1);
if((esvoc($prev) and escons($current) and $next!=" " and !escons($next)) or (escons($prev) and escons($current) and!juntas($prev.$current))){
$lines[$w]=substr($segmento,0,$f);
$f=0;
}elseif(esvoc($reprev) and escons($prev) and escons($current)){
$lines[$w]=substr($segmento,0,$f);
$f=0;
}
$next=$current;
}*/
/////////////
$w++;
$texto=substr($segmento,$f);
}
if(!empty($lines)){
foreach($lines as &$v){
$v = vsprintf($v, $replaceMatch[0]);
$v = str_replace($eraseFromString, '', $v);
$v = str_replace('
', '<br>', $v);
}
unset($v);
}
echo !empty($lines)
? implode('<br />', $lines)
: $str;
?>
</font>
Les recuerdo que para que este código funcione se debe tener el archivo verdana.ttf en la misma carpeta, ademas de las librerias TTF y GD2