Meddelande

Minska
No announcement yet.

BBCode/korta länkar

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • BBCode/korta länkar

    Tjena,

    Har följande för att parsa länkar som BBCode:
    Kod:
    $Str = preg_replace('/\[URL\](.*?)\[\/URL\]/i', '<a href="$1" rel="nofollow" target="_blank">$1</a>', $Str);
    Problemet är att om man postar väldigt långa URLer ser det konstigt ut, så jag skulle vilja korta ner "$1" som själva länktiteln. Skulle vilja korta ner det enl. följande:
    Kod:
    preg_replace('/(?<=^.{15}).{4,}(?=.{20}$)/', '...', $Str)
    Resultatet av ovan blir då t.ex. http://www.google.se/.../bla.html

    Men det går inte att använda ovan preg_replace på $1 (såklart!), så, hur gör jag? Tack!
    //Micke Andersson
    Hemsida | Kontakta
    ----------------------
    "Det är svårt att vara ödmjuk när man vet att man är bäst".

  • #2
    Vad händer om du ersätter punkterna med char(46) (= .)?

    Kommentera


    • #3
      Hej,

      Är inte riktigt med... Jag ska förklara lite bättre. När man postar en länk, sparas den i databasen såhär:
      När jag sedan visar inlägget, ska ovan parsas till:
      Kod:
      <a href="https://www.google.com.ph/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8" rel="nofollow">https://www.goog...=2&ie=UTF-8</a>
      Skulle alltså vilja göra "allt" med en preg_replace, men måste isf. köra en till replace på $1. Förstår inte hur och var jag ska få in ditt förslag.

      Tack
      //Micke Andersson
      Hemsida | Kontakta
      ----------------------
      "Det är svårt att vara ödmjuk när man vet att man är bäst".

      Kommentera


      • #4
        Om du använder preg_replace_callback() istället borde du kunna göra det du vill.
        "Det finns tre sorters lögn; vanlig lögn, förbannand lögn och statistik" - Mark Twain

        Kommentera

        Working...
        X