Avatar billede supermand69 Nybegynder
27. januar 2004 - 17:50 Der er 9 kommentarer og
1 løsning

wordwrap på mere end 50 tegn

hvorfor kan wordwrap() ikke tage mere end 50 tegn??? :/

er der andre alternativer??

$msg = wordwrap($row['msg'], 75, ' ', 1);
Avatar billede detox Nybegynder
27. januar 2004 - 18:02 #1
wordwrap har ikke en begrænsning på 50 tegn. Faktisk er 75 tegn default, hvis du ikke sætter nogen.
Avatar billede detox Nybegynder
27. januar 2004 - 18:07 #2
Alternativt kan du bruge css:

word-wrap:break-word;
Avatar billede supermand69 Nybegynder
27. januar 2004 - 19:07 #3
kan du så fortælle mig hvorfor den ikke gør det?? :)
Avatar billede supermand69 Nybegynder
27. januar 2004 - 20:04 #4
functions.php
function url2link($txt, $chat)
{
    if($chat) $txt = preg_replace("/(ftp|http|https):\/\/([\d\w~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "<a class=\'small\' href=\'\\1://\\2\' target=\'new\'>\\1://\\2</a>", $txt);
    else $txt = preg_replace("/(ftp|http|https):\/\/([\d\w~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "<a class=\"small\" href=\"\\1://\\2\" target=\"new\">\\1://\\2</a>", $txt);
   
    return $txt;
}

function sql2txt($txt)
{
    return nl2br(htmlspecialchars($txt));
}

-------------

<?
session_start();

require('req/functions.req');

if(!$USERID) exit;
?>
<script type="text/JavaScript">
var a = new Array();
<?
if(!isset($_GET['time'])) $time = 0;
else $time = $_GET['time'];

$get = mysql_query("SELECT * FROM $DB.chat WHERE time>$time ORDER BY time");
while($row = mysql_fetch_array($get))
{
    $get2 = mysql_query("SELECT name, color FROM $DB.user WHERE id=$row[user_id]");
    $user = mysql_fetch_array($get2);
   
    if($user['color']) $string .= 'a[a.length] = \'<a style="white-space: nowrap; color: #'.$user['color'].';" href="java script:show_user('.$row['user_id'].')">'.sql2txt($user['name']).'</a>\';';
    else $string .= 'a[a.length] = "'.sql2txt($user['name']).'";';
    $string .= 'a[a.length] = "'.date("H:i", $row['time']).'";';
    $string .= 'a[a.length] = "'.url2link(sql2txt(wordwrap($row['msg'], 70, ' ', 1)), 1).'";';
    $time = $row['time'];
}

echo $string;
?>
parent.write_to_chat(a);
setTimeout("location.href='<?=$PAGE?>?time=<?=$time?>'", <?=$CHAT_REFRESH?>);
</script>
Avatar billede Slettet bruger
27. januar 2004 - 23:58 #5
Sikker på, at den ikke gør det? Den sætter jo bare mellemrum ind, så hvis de kommer, hvor der allerede er et mellemrum i forvejen, så kan det jo ikke ses.

Derudover er det ikke så smart at gennemtvinge wordwrap, når du samtidig laver links klikbare. Du risikerer at brække et link i stykker.
Avatar billede supermand69 Nybegynder
28. januar 2004 - 00:11 #6
sandbox >>
den gør det ikke... det er vildt strange for hvis jeg kopiere følgende linje over i et andet dokument tager den fint over de 50 tegn:

url2link(sql2txt(wordwrap($row['msg'], 70, ' ', 1)), 1)

det er som om at der er et eller andet i min kode der nærmest sætter en begrænsning på så den kun kan tage de 50 tegn

ja, ved godt at det ikke er så smart at brække et link i stykker, men bliver nød til at gøre det... :( men jeg ville jo sætte wordwrap til 75 (som jeg jo ikke kan)... :(

desuden kører jeg også wordwrap før at der bliver lavet links så det er kun hvis selve URL'en er på over 75 tegn at den ødelægger dem :)
Avatar billede Slettet bruger
28. januar 2004 - 01:17 #7
Hvad er det, der går galt? Prøv at vise nogle eksempler på før/efter strenge.
Avatar billede supermand69 Nybegynder
28. januar 2004 - 12:09 #8
ok vildt strange.... hvis jeg lige sætter den til at lave en wordwrap udenfor mit javascript er der ingen problemer:

---------------
<?
session_start();

require('req/functions.req');

$row['msg'] = 'ælaksfølkasdfølkasdføælkasdøflksadfælkasædflkjasædlfkjaæsdlkfjæasdlkjfaæsdlfkjaæsdlkjfasædlkjfasædlkjfasdælkfaæsldk';
echo url2link(sql2txt(wordwrap($row['msg'], 75, ' ', 1)), 1);

if(!$USERID) exit;
?>
<script type="text/JavaScript">
var a = new Array();
<?
if(!isset($_GET['time'])) $time = 0;
else $time = $_GET['time'];


$sql = "SELECT t_chat.*, t_user.name, t_user.color
    FROM $DB.chat t_chat
    LEFT JOIN $DB.user t_user ON t_chat.user_id=t_user.id
    WHERE t_chat.time>$time ORDER BY t_chat.time";
$get = mysql_query($sql);
while($row = mysql_fetch_array($get))
{
    if($row['color']) $string .= 'a[a.length] = \'<a style="font-weight: bold; white-space: nowrap; color: #'.$row['color'].';" href="java script:show_user('.$row['user_id'].')">'.sql2txt($row['name']).'</a>\';';
    else $string .= 'a[a.length] = "'.sql2txt($row['name']).'";';
    $string .= 'a[a.length] = "'.date("H:i", $row['time']).'";';
    $string .= 'a[a.length] = "'.url2link(sql2txt(wordwrap($row['msg'], 75, ' ', 1)), 1).'";';
    $time = $row['time'];
}

echo $string;
?>
parent.write_to_chat(a);
setTimeout("location.href='<?=$PAGE?>?time=<?=$time?>'", <?=$CHAT_REFRESH?>);
</script>

------------

her bliver der udskrevet:
ælaksfølkasdfølkasdføælkasdøflksadfælkasædflkjasædlfkjaæsdlkfjæasdlkjfaæsdl fkjaæsdlkjfasædlkjfasædlkjfasdælkfaæsldk

men inde i mit script bliver den kun ved 50 tegn...?!?!?!?
Avatar billede supermand69 Nybegynder
28. januar 2004 - 12:27 #9
fårk jeg er dååm... jeg havde en wordwrap i en function inden jeg smed det hele i mysql... *dooooh*
Avatar billede Slettet bruger
28. januar 2004 - 14:33 #10
*G* Den slags fejl har alle lavet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporter til lokal IT Korsør

RackPeople

Teknisk Lead

Collectia A/S

Cyber Security Engineer

Capgemini Danmark A/S

Client Partner