Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] usuwanie znaczników HTML
Forum PHP.pl > Forum > Przedszkole
BugsBunny
Witam,

mam skrypt, który pobiera mi jakąś tam stronę zawierającą cennik usług jakiejś tam firmy. Cała strona jest zawarta jako string w zmiennej.
Jak najszybciej dobrać się do cen? Chodzi o to czy np jest jakas funkcja którą mi wytnie znaczniki HTML zostawiając samą treść ?
kornel-php
strip_tags
preg_match_all
Gość
Oto funckcja ktura usuwa całe tagi HTML razem z atrybutami, ale bez zawartości,
  1. <?php
  2. function notags($content) {
  3.  $step=0;
  4.  // 0=poza tagiem
  5.  // 1=w tagu
  6.  // 2=w "
  7.  // 3=w '
  8.  $len=strlen($content);
  9.  $new="";
  10.  for($i=0;$i<$len;$i++) {
  11. $char=substr($content,$i,1); //pobierz znak
  12. if($step==0) {
  13.  if($char=="<") {
  14. $step=1;
  15.  } else {
  16. $new.=$char;
  17.  }
  18. } elseif($step==1) {
  19.  if($char==">") {
  20. $step=0;
  21.  } elseif($char=='"') {
  22. $step=2;
  23.  } elseif($char="'") {
  24. $step=3;
  25.  }
  26. } elseif($step==2) {
  27.  if($char=='"') {
  28. $step=1;
  29.  }
  30. } elseif($step==3) {
  31.  if($char=="'") {
  32. $step=1;
  33.  }
  34. }
  35.  }
  36. }
  37. ?>

Użycie: notags($strona) //w miejsce $strona wstaw treść strony
Usuń też nagłówek strony i stopkę (przy użyciu np. substr()), ponieważ może zostać wyświetlone zawartości tagów <title> oraz <script>
BugsBunny
troche dostosowałem do swoich potrzeb, poprawiłem i śmiga
  1. <?php
  2. function notags($content) {
  3.  $step=0;
  4.  // 0=poza tagiem
  5.  // 1=w tagu
  6.  
  7.  $len=strlen($content);
  8.  $new="";
  9.  for($i=0;$i<$len;$i++) 
  10.  {
  11.  $char=substr($content,$i,1); //pobierz znak
  12.  if($step==0) 
  13. {
  14.  if($char=="<")
  15. {
  16. $step=1;
  17.  } 
  18. else 
  19. {
  20. $new.=$char;
  21.  }
  22. } 
  23. elseif($step==1) 
  24. {
  25.  if($char==">") 
  26. {
  27. $step=0;
  28.  }
  29. } 
  30.  }
  31.  return $new;
  32. }
  33. ?>

P.S. w temacie raczej chodziło o to czy nie ma takiej funkcji wbudowanej w PHP
revyag
No bez przesady.
  1. <?php
  2. $new = ereg_replace('/&w;/', '',strip_tags($content));
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.