PHP hjälp!!!

Swedie

Administrator
Personal
Gick med
6 Mar 2003
Ort
Stockholm-ish
Hoj
Yamaha R7 -24
Nån som är kunglig på PHP?

Jag har en text ... t.ex:

*********
Jag är bara så bäst, fast inte just nu i med att jag inte kan PHP så jättebra, igentligen. Jag är bara så bäst, fast inte just nu i med att jag inte kan PHP så jättebra, igentligen. Jag är bara så bäst, fast inte just nu i med att jag inte kan PHP så jättebra, igentligen. Jag är bara så bäst, fast inte just nu i med att jag inte kan PHP så jättebra, igentligen. Och nu en URL som är CP lång: http://www.sporthoj.com/fgsdfgs/fg/dsf/gs/fgs/fgsf/gs/fg/sdf/gds/fg/dfg/ds/fgd/sfg/dsfg/ds/fg/dfg/sdfg.jpg Jag är bara så bäst, fast inte just nu i med att jag inte kan PHP så jättebra, igentligen. Jag är bara så bäst, fast inte just nu i med att jag inte kan PHP så jättebra, igentligen.
**********

Jag vill korta ner URLen, och samtidigt göra den till en HREF länk (alltså <a href="ålänkenhärifull">ochhärdenförkortadeversionen</a>).. Jag vill att URLen som man Ser, ska göras om så den endast är max 35 tecken lång OM den är över 35 tecken lång.

Förstår du mig? Ifall du kan greja det vore det ypperligt schyst!

Detta har jag just nu som script för att göra om till HTML länkar (som funkar bra, men gör inte helt vad jag vill juh!)

$data = preg_replace( "/(?<!<a href=\")((http|ftp)+(s)?:\/\/[^<>\s]+)/i", "<a href=\"\\0\">\\0</a>", $data );

Tack!
 

Zormin

Aldrig under 10.000 rpm
Gick med
6 Mar 2003
Ort
Linköping
Hoj
ZX-10R
Du borde ju kunna använda substr-funktionen, typ:

$html_link = "<a href=\"$url\">" . substr($url, 0, 35) . "</a>";

OBS! Kan inte PHP alls, men jag chansade lite. :D Det finns en substr såg jag iaf efter en sökning på google.
 

Swedie

Administrator
Personal
Gick med
6 Mar 2003
Ort
Stockholm-ish
Hoj
Yamaha R7 -24
sopa... jag vet, men läs vad jag vill.

Det är INTE endast 1 url, det är en text med en URL inuti, så jag måste första detekta URLen och sen göra om den...
 

Zormin

Aldrig under 10.000 rpm
Gick med
6 Mar 2003
Ort
Linköping
Hoj
ZX-10R
Swedie skrev:
sopa... jag vet, men läs vad jag vill.

Det är INTE endast 1 url, det är en text med en URL inuti, så jag måste första detekta URLen och sen göra om den...
Jaha .. du skulle plocka ut URL:en oxo!

$pos1 = strpos($data, "http://");
$pos2 = strpos($data, " ", $pos1);
$url = substr($data, $pos1, $pos2-$pos1);

Detta förutsätter ju iofs att det är ett mellanslag efter URL:en. Good enough?
 

Swedie

Administrator
Personal
Gick med
6 Mar 2003
Ort
Stockholm-ish
Hoj
Yamaha R7 -24
hum, okej, mindre sopa nu =)

men det går inte kombinera funktionen där du söker efter position av en viss text med preg_match? detta för att se till att alla sorters URLer hittas...
 

Zormin

Aldrig under 10.000 rpm
Gick med
6 Mar 2003
Ort
Linköping
Hoj
ZX-10R
Swedie skrev:
hum, okej, mindre sopa nu =)

men det går inte kombinera funktionen där du söker efter position av en viss text med preg_match? detta för att se till att alla sorters URLer hittas...
Hmm...

Kolla på funktionen preg_grep. Den borde du kunna använda tillsammans med explode.
 

Swedie

Administrator
Personal
Gick med
6 Mar 2003
Ort
Stockholm-ish
Hoj
Yamaha R7 -24
Tittade lite på den funktionen och den kräver ju en array ... går ju inte. min $string är endast en string med massa text i (artikel).

Vill verkligen få det här utklurat...
 

sgtpepper

Delivering excellence since 1974
Gick med
6 Mar 2003
Ort
Stockholm
Hoj
Triumph S3 -02, Honda XR650R -02
Använd funktionen preg_replace_callback() istället, då kan du ifrån den funktionen anropa en annan funktion som sköter ihopmeckandet av den ersatta strängen... Ähh, dåligt förklarat, men kika på funktionen så förstår du nog! :)

Här är koden som gör det du ville ha, kortar ner länktexten så att den max är 35 tkn:
Code:
<?
  function createLink($matches) {
     return "<a href=\"".$matches[1]."\">".substr($matches[1], 0, 35)."</a>";
  }
  
  $data = "Jag är bara så bäst, fast inte just nu i med att jag inte kan PHP". 
           "så jättebra, igentligen. Jag är bara så bäst, fast inte just nu i med ".
           "att jag inte kan PHP så jättebra, igentligen. Jag är bara så bäst, fast".
           "inte just nu i med att jag inte kan PHP så jättebra, igentligen. Jag är ".
           "bara så bäst, fast inte just nu i med att jag inte kan PHP så jättebra, ".
           "igentligen. Och nu en URL som är CP lång: ".[url]http://www.sporthoj.com/fgsdfgs/fg/dsf/gs/fgs/fgsf/gs/fg/sdf/gds/fg/dfg/ds/fgd/sfg/dsfg/ds/fg/dfg/sdfg.jpg[/url]".
           "Jag är bara så bäst, fast inte just nu i med att jag inte kan PHP så ".
           "jättebra, igentligen. Jag är bara så bäst, fast inte just nu i med att ".
           "jag inte kan PHP så jättebra, igentligen.";

  $data = preg_replace_callback( "/(?<!<a href=\")((http|ftp)+(s)?:\/\/[^<>\s]+)/i", createLink, $data ); 

  echo $data;
?>

Som du ser så anropar preg_replace_callback metoden createLink, denna metod är "callback"-metoden och den får en array med träffarna som den sen använder för att sätta ihop lämplig utdata med hjälp av substr-funktionen.
 
Last edited:

Swedie

Administrator
Personal
Gick med
6 Mar 2003
Ort
Stockholm-ish
Hoj
Yamaha R7 -24
yes box! Jättetack!

Ypperlig funktion! Vill du vara min nya PHP support på ICQ, MSN, AOL ? :D skulle hjälpa .. lols...

vill veta mer .. men, antar det tar tid.
 

sgtpepper

Delivering excellence since 1974
Gick med
6 Mar 2003
Ort
Stockholm
Hoj
Triumph S3 -02, Honda XR650R -02
Swedie skrev:
Ypperlig funktion! Vill du vara min nya PHP support på ICQ, MSN, AOL ? :D skulle hjälpa .. lols...
Hehe, det kostar ;). Närå, har du frågor så är det bara att ställa dom så skall jag försöka svara, men framförallt så bör du läsa på www.php.net där det finns tonvis med information och kommentarer, det var där jag hittade funktionen preg_replace_callback, jag hade aldrig använt den tidigare.
 
Nyheter
Snart dags för Adventure Motorcycle Expo

Den 8-9 mars arrangeras Adv...

MV Agusta firar 80 år

I år firar italienska motor...

MV Agusta fyller 80 år

I år firar italienska motor...

Rekordmånga nya personliga regskyltar

Under fjolåret godkände Tra...

PIERER Mobility: Back on Track– KTM AG:s omstruktureringsplan godkänd av fordringsägarna

Pressrelease, Wels, 25 Febr...

Hojmässa i Halmstad den 2-3 mars

De två första dagarna i mar...

Längre bakstänka för R 1300 GS

Det tyskbaserade företaget ...

Längre bakstänka för R 1300 GS

Svingarmslagringen, svingar...

Vi breddar tidningen ytterligare!

Björn Glansk från BigTwin o...

Vi breddar tidningen ytterligare!

Björn Glans från BigTwin oc...

Top