login  Naam:   Wachtwoord: 
Registreer je!
 Forum

url in tekst zoeken

Offline riekele - 17/08/2008 23:26
Avatar van riekelePHP beginner Beste SiMa, ik ben met een stukje code bezig dat uit een stuk tekst een url haalt en er voor zorgt dat het een link wordt. bij www.sitemasters.be gaat het nu perfect, maar bij http://www.sitemasters.be wordt http:// geen link, en dan www.sitemasters.be wordt een link waarbij er wel http://sitemasters.be in de url staat.

dit gebeurt er dus:
  1. www.sitemasters.nl => <a href="http://www.sitemasters.be">www.sitemasters.be</a>
  2.  
  3. http://www.sitemasters.be => http://<a href="http://www.sitemasters.be">www.sitemasters.be</a>


ik heb nu dit als code:
  1. preg_match_all('~(?:http://)?(?:www\.)([a-zA-Z0-9\-]+)\.[a-z]{2,6}~', $input, $resultaten);
  2. foreach($resultaten[0] as $value)
  3. {
  4. if(strpos($value,"http://") !== false)
  5. {
  6. $value = substr($value,7);
  7. }
  8.  
  9. $input = str_replace($value,'<a href="http://'.$value.'">'.$value.'</a>',$input);
  10. }
  11.  
  12.  
  13. echo $input;

2 antwoorden

Gesponsorde links
Offline nick5556 - 18/08/2008 11:13
Avatar van nick5556 PHP beginner
  1. preg_match_all('~(?:http://)?(?:www\.)([a-zA-Z0-9\-]+)\.[a-z]{2,6}~', $input, $resultaten);
  2. foreach($resultaten[0] as $value)
  3. {
  4. if(strpos($value,"http://") != false) // Een = teken teveel ;)
  5. {
  6. $value = substr($value,7);
  7. }
  8.  
  9. $input = str_replace($value,'<a href="http://'.$value.'">'.$value.'</a>',$input);
  10. }
  11.  
  12.  
  13. echo $input;


Ik zag dit staan, voor derest snap ik er niet zo heel veel van 
Offline MiST - 18/08/2008 14:03 (laatste wijziging 18/08/2008 14:16)
Avatar van MiST Lid niet noodzakelijk, de !== operator bestaat ook, evenals ===

Even de PHP functie hulp bekeken en die zegt dit:

int strpos ( string $haystack , mixed $needle [, int $offset ] )

Wat wil zeggen dat de functie een INTEGER teruggeeft. Een integer is niet 'false'.

Daarom moet je controleren als volgt:

  1. //De string begint niet met http://
  2. if(strpos($value,"http://") != 0)
  3. {
  4. // ff http:// ervoor knallen
  5. $value = 'http://' . $value;
  6. }


De rest kan blijven denk ik
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.199s