login  Naam:   Wachtwoord: 
Registreer je!
 Forum

preg_replace check op http

Offline spyzone - 13/12/2006 12:06
Avatar van spyzonePHP beginner Hey,

Ik heb het volgende script om van een <a href> een goede script te maken:
  1. $text = preg_replace('@<a\b[^>]href=["?](.*?)["?](.*?)>(.*?)</a>@si', '<a href="'.$urllink.'$1" $2>$3</a>', $text);

Nou doet die het goed, alleen ik wil er nog een functie bij.
Soms staat er in de <a href> dit:<a href="/map/index.php"> of dit: <a href="http://www.site.be/map/index.php">
Hoe kan ik een check in de preg_replace plaatsen dat die kijkt of er een http:// in staat, en zodra dat er niet staat, die het via een opgegeven string erin zet?

Beetje moeilijk uit te leggen 

Dank je.

7 antwoorden

Gesponsorde links
Offline Wim - 13/12/2006 12:13
Avatar van Wim Crew algemeen eerst een controle doen met preg_match();
Offline spyzone - 14/12/2006 21:06
Avatar van spyzone PHP beginner oke, super.
Alleen hoe krijg ik dan de url weer terug in de tekst.

Ik heb nu dit:
  1. <?php
  2. $document = 'hallo<A HREF="http://www.spyzone.nl" alt=hallo target="_blank">spyzone.nl</a><A HREF="/map/index.php" alt=hallo target="_blank">spyzone.nl</a>Hier nog een tekst.';
  3. echo '<textarea ROWS=8 COLS=60>'.$document.'</textarea><br>';
  4. echo"Convert to:<br>";
  5. $text = preg_replace('@<a\b[^>]href=["?](.*?)["?](.*?)>(.*?)</a>@si', '<a href="'.$urllink.'$1" $2>$3</a>', $document);
  6. echo '<textarea ROWS=8 COLS=60>'.$text.'</textarea>';
  7. ?>


Nu moet die dus als er geen http in de <a href> staat, die er bijgezet worden.
Hoe kan ik dan die preg_match ertussen doen?
Thx
Offline leendert - 14/12/2006 21:40
Avatar van leendert HTML beginner if (preg_match('@<a\b[^>]href=["?](.*?)["?](.*?)>(.*?)</a>@si', $document)) {
// hier je preg_replace();
}
Offline spyzone - 14/12/2006 21:57 (laatste wijziging 14/12/2006 22:05)
Avatar van spyzone PHP beginner Hij doet dan alle <a href> veranderen, terwijl ze niet alle beginnen met http.
Offline Richard - 15/12/2006 08:26
Avatar van Richard Crew algemeen ~(<a\s*[^<>]*href=")(?!https?:[^"]+)([^"]+)("[^<>]*>)~

replace met:

\1http://\2\3
Offline spyzone - 15/12/2006 13:39
Avatar van spyzone PHP beginner Hij doet het nu half:p.
Ik heb namelijk nog 1 probleempje.
De string die hij checkt is met Addslashes.
Dus hij ziet de " niet, omdat het \" moet zijn.
Nu probeer ik dat te veranderen, maar dat doet die niet. 
  1. $Content = preg_replace('@<a\b[^>](.*?)href=[\"?]http(.*?)[\"?](.*?)>(.*?)</a>@si', '<a $1href=\"'.$urllink.'http$2\"$3>$4</a>', $Content);

Weet iemand hoe je dat kan oplossen?
Offline Rik - 15/12/2006 18:24
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
En als je een stripslashes() om $content heen zet?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.216s