Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][RegEx] Jak wyciąć taki tekst?, problem z wycięciem zakomentowanego xml-a
slwy
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 6.01.2009

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


  1. <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> <w:LsdException Locked="false" Name="Default Paragraph Font" /> </w:LatentStyles> </xml><![endif]--> <!--[if gte mso 10]>
  2. <style>
  3. /* Style Definitions */
  4. table.MsoNormalTable
  5. {mso-style-name:Standardowy;
  6. mso-tstyle-rowband-size:0;
  7. mso-tstyle-colband-size:0;
  8. mso-style-noshow:yes;
  9. mso-style-parent:"";
  10. mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
  11. mso-para-margin:0cm;
  12. mso-para-margin-bottom:.0001pt;
  13. mso-pagination:widow-orphan;
  14. font-size:10.0pt;
  15. font-family:"Times New Roman";
  16. mso-ansi-language:#0400;
  17. mso-fareast-language:#0400;
  18. mso-bidi-language:#0400;}
  19. </style>
  20. <![endif]-->


mam problem z wycięciem tego używając wyrażeń regularnych. używam takiego dopasowania, ale nie działa:
  1. <?php
  2. preg_replace('/<!--[.*]*?-->/, ', $value);
  3. ?>

tzn wycina tylko pierwszy komentarz.

Ten post edytował slwy 12.03.2009, 11:01:53
Go to the top of the page
+Quote Post
deirathe
post
Post #2





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


To jest tekst który chcesz wyciągnąć. Czy chcesz coś z niego wyciągnąć? Btw użyj kropki przed gwiazdką. Tyle że u masz zapytanie niezachłanne, więc się skończy na pierwszym ]-->, pokaż resztę tego dokumentu to będzie można coś zdziałać

Ten post edytował deirathe 12.03.2009, 10:54:06
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie ma sensu się męczyć; użyj programu o nazwie Tidy, on odwala całą brudną robotę. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
zegarek84
post
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(slwy @ 12.03.2009, 10:45:39 ) *
mam problem z wycięciem tego używając wyrażeń regularnych. używam takiego dopasowania, ale nie działa:
  1. <?php
  2. preg_replace('/<!--[.*]*?-->/, ', $value);
  3. ?>

tzn wycina tylko pierwszy komentarz.

sprawdź czy o to chodziło co podałem - wplotłem między komentarze tekst który sie zostanie - to co robiłeś było w zasadzie dobrze tylko zapomniałeś drugiego apostrofu do pustego ciągu i wynik z preg_replace trzeba przypisać do zmiennej (w preg_match nie trzeba więc to zapewne zmyliło):
  1. <?php
  2. $txt='<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> <w:LsdException Locked="false" Name="Default Paragraph Font" /> </w:LatentStyles> </xml><![endif]--> udało się<!--[if gte mso 10]>
  3. <style>
  4. /* Style Definitions */
  5. table.MsoNormalTable
  6. {mso-style-name:Standardowy;
  7. mso-tstyle-rowband-size:0;
  8. mso-tstyle-colband-size:0;
  9. mso-style-noshow:yes;
  10. mso-style-parent:"";
  11. mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
  12. mso-para-margin:0cm;
  13. mso-para-margin-bottom:.0001pt;
  14. mso-pagination:widow-orphan;
  15. font-size:10.0pt;
  16. font-family:"Times New Roman";
  17. mso-ansi-language:#0400;
  18. mso-fareast-language:#0400;
  19. mso-bidi-language:#0400;}
  20. </style>
  21. <![endif]-->';
  22. $txt = preg_replace('/<!--.*?-->/s', '', $txt);
  23. echo $txt;
  24. ?>


poprawka - drobny błąd...

Ten post edytował zegarek84 13.03.2009, 20:26:56
Go to the top of the page
+Quote Post
slwy
post
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 6.01.2009

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


@zegarek84
działa gites, tylko jeszcze nie wycina styli.

ogólnie: to jest początek zmiennej kodu strony (treść artykułu). smartym robie truncate i on mi ucina zamykający znacznik komentarza html, co powoduje, że wyświetlają się te krzaczki. już wyeliminowałem błąd przy dodawaniu arytkułu, ale chcę jeszcze poprawić wyświetlanie już istniejących.
Go to the top of the page
+Quote Post
zegarek84
post
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


poprawiłem - dodałem modyfikator s w wyrażeniu...
Go to the top of the page
+Quote Post
slwy
post
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 6.01.2009

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


aaaaj, wystarczy dodac jeszcze parametry znajdujace znaki lamania linii (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i przejechać taki tekst najpierw anty-łamaczem, następnie anty-komentarzem i gra (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.12.2025 - 15:06