login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Handige scripts > Stuur extern html mee met mail

Stuur extern html mee met mail

Auteur: marten - 03 april 2007 - 14:36 - Gekeurd door: Stijn - Hits: 2991 - Aantal punten: 1.33 (3 stemmen)




Dit is een functie die je kan gebruiken wanneer je een vooraf opgemaakte website wilt sturen via mail. Handig voor bijvoorbeeld nieuwsbrieven die opgemaakt worden door bijvoorbeeld FCKeditor.

Handigheidje hierin is dat de relatieve url's omgezet worden naar absolute zodat je een goed path in je website hebt.

Voorbeeld gebruik:

$matches = getExternHtml('http://www.example.nl/test.html');


Code:
  1. <?php
  2. /**
  3.  * @Author Marten van Urk
  4.  *
  5.  * @param String $url_val
  6.  * @return True wanneer het een url is, False wanneer dit niet zo is.
  7.  */
  8. function check_url($url_val) {
  9. $url_pattern = "http\:\/\/[[:alnum:]\-\.]+(\.[[:alpha:]]{2,4})+";
  10. $url_pattern .= "(\/[\w\-]+)*"; // subdirs en rewrite urls /val_1/45/
  11. $url_pattern .= "((\/[\w\-\.]+\.[[:alnum:]]{2,4})?"; // bestandsnaam index.html
  12. $url_pattern .= "|"; // eindig met bestandsnaam of or ?
  13. $url_pattern .= "\/?)"; // Slash of niet
  14. $error_count = 0;
  15. if (strpos($url_val, "?")) {
  16. $url_parts = explode("?", $url_val);
  17. if (!preg_match("/^".$url_pattern."$/", $url_parts[0])) {
  18. $error_count++;
  19. }
  20. if (!preg_match("/^(&?[\w\-]+=\w*)+$/", $url_parts[1])) {
  21. $error_count++;
  22. }
  23. } else {
  24. if (!preg_match("/^".$url_pattern."$/", $url_val)) {
  25. $error_count++;
  26. }
  27. }
  28. if ($error_count > 0) {
  29. return false;
  30. } else {
  31. return true;
  32. }
  33. }
  34.  
  35. /**
  36.  * @author Marten van Urk
  37.  *
  38.  * @param String $text
  39.  * @param String $base
  40.  * @return $text
  41.  */
  42.  
  43. function absolute($text, $base) {
  44. if (empty($base))
  45. return $text;
  46. // base url needs trailing /
  47. if (substr($base, -1, 1) != "/")
  48. $base .= "/";
  49. // Replace links
  50. $pattern = "/<a([^>]*) href=\"(?!http|ftp|https)([^\"]*)\"/";
  51. $replace = "<a\${1} href=\"" . $base . "\${2}\"";
  52. $text = preg_replace($pattern, $replace, $text);
  53. // Replace images
  54. $pattern = "/<img([^>]*) src=\"(?!http|ftp|https)([^\"]*)\"/";
  55. $replace = "<img\${1} src=\"" . $base . "\${2}\"";
  56. $text = preg_replace($pattern, $replace, $text);
  57. // Done
  58. return $text;
  59. }
  60.  
  61. /**
  62.  * @Author Marten van Urk
  63.  *
  64.  * @param String $url
  65.  * @return String
  66.  */
  67.  
  68. function getExternHtml($url) {
  69. /**
  70.   * Controleren of $url wel een url is
  71.   */
  72. if (check_url($url)) {
  73. /**
  74.   * Het bestand is te bereiken dus kunnen we verder gaan.
  75.   *
  76.   */
  77. $stream = file_get_contents($url);
  78. $stream = str_replace('\\', '/', $stream);
  79.  
  80. $base = strrpos($url, '/');
  81. $base = $base + 1;
  82. $base = substr($url, 0, $base);
  83. /**
  84.   * Links omzetten van relatief naar absoluut
  85.   */
  86. $stream = absolute($stream, $base);
  87.  
  88. return $stream;
  89. } else {
  90. die('Geen geldige url');
  91. }
  92. }
  93. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (3)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.03s