PHP hjälp!!!

Swedie

Administrator
Personal
Gick med
6 Mar 2003
Ort
Stockholm-ish
Hoj
såld 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!
 
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.
 
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...
 
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?
 
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...
 
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.
 
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...
 
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:
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.
 
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
Vi provkör Indian Chief Vintage

Screenshot I kommande nu...

Ducati DesertX 2026

Ducati DesertX 2026 – ännu ...

KTM firar 100 år av 6DAYS

KTM firar 100 år av 6DAYS® ...

Snabbladdad ny 94-hästars elhoj

BBM Hiro – ett helt nyutvec...

KTM bryter med Kiska – så påverkas framtidens design

Efter flera decennier tills...

Ducati Formula 73 – retro och racing i perfekt harmoni

Retro möter racing – Ducati...

Voge DS 800 X Rally – Ny offroadhoj till 2026

Voge DS 800 X Rally är en n...

Harley-Davidson laddar upp med massor av kubik

Harley-Davidson fortsätter ...

KTM 790 Duke – ny generation på gång till 2027?

KTM:s mellanklassraket får ...

Nytt från Halvarssons: Mora V2

Halvarssons nya Mora V2 är ...

Back
Top