Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenie regularne, do preg_replace
mosky
post 5.09.2005, 20:41:41
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.12.2004

Ostrzeżenie: (0%)
-----


Witam!

Pomóżcie bo ja nie daję rady sad.gif

Kod
<!--
<HTML
><HEAD
><TITLE
>php</TITLE
><META
NAME="GENERATOR"
CONTENT="AZ"><LINK
REL="NEXT"
TITLE="Test"
HREF="Test.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="book"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
-->


Jak napisać do tego czegoś wyrażenie regularne?
Upraszczając - chodzi mi o wywalenie wszystkiego co jest między znacznikami htmlowego komentarza?
Go to the top of the page
+Quote Post
sajborg
post 5.09.2005, 20:58:32
Post #2





Grupa: Zarejestrowani
Postów: 271
Pomógł: 0
Dołączył: 20.08.2003
Skąd: Szczecinek

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $str='<!--
  3. <HTML
  4. ><HEAD
  5. ><TITLE
  6. >php</TITLE
  7. ><META
  8. NAME="GENERATOR"
  9. CONTENT="AZ"><LINK
  10. REL="NEXT"
  11. TITLE="Test"
  12. HREF="Test.html"><META
  13. HTTP-EQUIV="Content-type"
  14. CONTENT="text/html; charset=UTF-8"></HEAD
  15. ><BODY
  16. CLASS="book"
  17. BGCOLOR="#FFFFFF"
  18. TEXT="#000000"
  19. LINK="#0000FF"
  20. VLINK="#840084"
  21. -->';
  22.  
  23. $str=preg_replace('/<!--(.*)-->/',' ',$str);
  24. echo $str
  25. ?>


--------------------
Warsztat: gPHPEdit | Linux 2.6.17-11-generic (Ubuntu)
Sprzęt: Noteook BenQ A33E
___________________________________________________
Go to the top of the page
+Quote Post
mosky
post 5.09.2005, 21:25:49
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.12.2004

Ostrzeżenie: (0%)
-----


Dzięki smile.gif

Ostatecznie konieczna jest niewielka modyfikacja ze względu na fakt, iż string ma dodane znaczniki nowej linii.

Kod
$reg['0']='/\\s/';
$reg['1']='/<!--(.*)-->/';

$str=preg_replace($reg,'',$str);
echo $str;
Go to the top of the page
+Quote Post
Marusz
post 6.09.2005, 10:25:46
Post #4





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

Ostrzeżenie: (0%)
-----


Cytat(mosky @ 2005-09-05 21:25:49)
Dzięki smile.gif

Ostatecznie konieczna jest niewielka modyfikacja ze względu na fakt, iż string ma dodane znaczniki nowej linii.

Kod
$reg['0']='/\\s/';
$reg['1']='/<!--(.*)-->/';

$str=preg_replace($reg,'',$str);
echo $str;

Dlatego nalezy zmodyfikowac odrobine rozwiazanie paweb, dodajac parametr /s
  1. <?php
  2.  
  3. $str=preg_replace('/<!--(.*)-->/s',' ',$str);
  4. echo $str
  5.  
  6. ?>

A /s oznacza:
Cytat
If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines.


--------------------
Go to the top of the page
+Quote Post
Radarek
post 6.09.2005, 11:52:44
Post #5





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 23.05.2005

Ostrzeżenie: (0%)
-----


Jak zwykle popelniacie bardzo prosty blad w tego typu wyrazeniach. Wydaje mi sie ze nawet nie zdajecie sobie sprawy ze sposobu dzialania (.*) itp :-).
Przyklad:

<!--hm-->
<h1>naglowek</h1>
<!-hm2-->

Co zlapie wasze wyrazenie? Oczywiscie ze calosc! (.*) zlapie:
"hm-->
<h1>naglowek</h1>
<!-hm2"

Zapewne php obsluguje takze niezachlanny operator * (poprzed dodanie ? za *).
Proponuje:
$str=preg_replace('/<!--(.*?)-->/s',' ',$str);
Go to the top of the page
+Quote Post
sajborg
post 6.09.2005, 14:56:59
Post #6





Grupa: Zarejestrowani
Postów: 271
Pomógł: 0
Dołączył: 20.08.2003
Skąd: Szczecinek

Ostrzeżenie: (0%)
-----


Wlasnie nie wiedzialem nigdy po co jest .*? :]


--------------------
Warsztat: gPHPEdit | Linux 2.6.17-11-generic (Ubuntu)
Sprzęt: Noteook BenQ A33E
___________________________________________________
Go to the top of the page
+Quote Post
Radarek
post 6.09.2005, 15:06:58
Post #7





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 23.05.2005

Ostrzeżenie: (0%)
-----


Cytat(paweb @ 2005-09-06 13:56:59)
Wlasnie nie wiedzialem nigdy po co jest .*? :]

roznica miedzy * a *? jest taka ze ten pierwszy operator bierze maksymalna ilosc znakow jaka pasuje a ten drugi bierze minimalna.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 08:46