Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]zmiena
Mikolaj.on
post 19.01.2011, 20:23:16
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.01.2011

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


Witam czytałem manuala preg_match ale nie mogę rozwikłać jak zrobić żeby preg_match wczytywało tekst z pomiędzy <title type='text'>Tytuł2</title> żeby nie czytało tytuł tylko żeby wyświetlało tytuł 2 i tytuł 3
  1. <?php
  2.  
  3. $src = ('<title type='text'>Tytuł</title><title type='text'>Tytuł2</title><content type='text'><title type='text'>Tytuł3</title><content type='text'>');
  4.  
  5. preg_match('<title type='text'>(.*?)<\/title><content type='text'><content', $src, $matches);
  6.  
  7.  
  8.  
  9. echo "$matches[1]";
  10.  
  11. ?>


.

Ten post edytował Mikolaj.on 19.01.2011, 20:14:30
Go to the top of the page
+Quote Post
nekomata
post 19.01.2011, 20:27:36
Post #2





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


nie znam się za bardzo na preg_match ale chyba zapomniałeś znaczków rozpoczęcia.. poza tym ja jak chce coś "zmatchować" konkretnie to podaje co jest przed i co jest po i jeszcze jak chcesz parę rzeczy wyłapać na raz to daj preg_match_all
działający kod to
  1. preg_match_all('|<title type="text">(.*?)</title>|', $src, $matches);

zapodaj print_r na $matches i jesteś w domu.
Go to the top of the page
+Quote Post
Mikolaj.on
post 19.01.2011, 21:02:16
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.01.2011

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


print zastąpiłem echo. Chodzi mi jednak bo mam problem z 'text' jak widzimy nie jest to " i nie wiem jak zrobić by czytał jedno takie '

  1. <?php
  2.  
  3. preg_match_all('/<title type='text'>(.*?)<\/title><content type='text'>/', $src, $matches);
  4.  
  5. echo "$matches[1]";
  6.  
  7. ?>
Go to the top of the page
+Quote Post
Ulysess
post 19.01.2011, 21:29:50
Post #4





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


  1. preg_match_all('/<title type=\'text\'>(.*?)<\/title><content type='text'>/', $src, $matches);
  2. // lub
  3. preg_match_all("/<title type='text'>(.*?)<\/title><content type='text'>/", $src, $matches);


na początku i na końcu musi być raczej | lub # , nie znam się ale nie wydaje mi się aby była flaga slash :|
Go to the top of the page
+Quote Post
fiszol
post 19.01.2011, 21:46:55
Post #5





Grupa: Zarejestrowani
Postów: 452
Pomógł: 16
Dołączył: 25.05.2004
Skąd: Gorzów Wlkp.

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


To nie jest flaga tylko delimiter, cytat z manuala:
Cytat
Often used delimiters are forward slashes (/), hash signs (#) and tildes (~). The following are all examples of valid delimited patterns.
/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%

Slah, hash, oba są prawidłowe. Ważne żeby kończyć tym samym znakiem którym się otwierało.


--------------------
\o/
Go to the top of the page
+Quote Post
Mikolaj.on
post 19.01.2011, 22:15:32
Post #6





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.01.2011

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


Niestety nie rozwiązuje to mojego problemu ciągle Coś innego pokazuje

  1. <?php
  2.  
  3. $src = file_get_contents('http://gdata.youtube.com/feeds/api/users/mosadtracz/newsubscriptionvideos');
  4.  
  5. preg_match('/<title type=\'text\'>(.*?)<content type=\'text\'>/', $src, $matches);
  6.  
  7.  
  8. echo "$matches[1]";
  9.  
  10. ?>
Go to the top of the page
+Quote Post
Ulysess
post 19.01.2011, 23:03:08
Post #7





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


z niezrozumiałych mi przyczyn to rozwiązanie nie działa..

  1. <?php
  2.  
  3. $c = curl_init();
  4. curl_setopt($c, CURLOPT_URL, 'http://gdata.youtube.com/feeds/api/users/mosadtracz/newsubscriptionvideos');
  5. curl_setopt($c, CURLOPT_HEADER, 0);
  6. curl_setopt($c, CURLOPT_NOBODY, 0);
  7. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  8. $page = curl_exec($c);
  9. curl_close($c);
  10.  
  11. //echo $page;
  12.  
  13. preg_match_all("#<title type='text'>(.*)</content>#", $page, $matches);
  14.  
  15. $length = count($matches[0]);
  16. //echo $length;
  17. for ( $i = 0; $i <= 100; $i++ )
  18. {
  19. echo $matches[0][$i],'<br/><br/>';
  20. }
  21.  
  22. ?>
Go to the top of the page
+Quote Post
Mikolaj.on
post 20.01.2011, 14:56:13
Post #8





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.01.2011

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


już lepiej ale dalej nie to co trzeba pokazuje jakieś inne linijki do tego dopisuje

tu jest strona żeby przetestować czy działa http://regexp.pl/
Go to the top of the page
+Quote Post
amii
post 20.01.2011, 15:25:54
Post #9





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Po preg_match_all daj:
  1. foreach ($matches as $value) {
  2. echo $value[1];
  3. }


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
Mikolaj.on
post 20.01.2011, 23:17:20
Post #10





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.01.2011

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


Działa tylko teraz losuje sobie które dodać jedne dodaje innych nie i wychodzi
  1. Cut Copy - This Is All We've Got
  2. Ranking Vlogerów akcja zSpontanik
  3. Po co Ci konto na YouTube. Skoro nie wrzucasz filmików
  4. Peter Bjorn And John - Ancient Curse

a powinno być
  1. Gwara Śląska- Bez wycinania złych urywków.
  2. Cut Copy - This Is All We've Got
  3. Ranking Vlogerów akcja zSpontanik
  4. Peter Bjorn And John - Ancient Curse


  1. <?php
  2. $c = curl_init();
  3. curl_setopt($c, CURLOPT_URL, 'http://gdata.youtube.com/feeds/api/users/mosadtracz/newsubscriptionvideos');
  4. curl_setopt($c, CURLOPT_HEADER, 0);
  5. curl_setopt($c, CURLOPT_NOBODY, 0);
  6. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  7. $page = curl_exec($c);
  8. curl_close($c);
  9.  
  10. //echo $page;
  11.  
  12. preg_match_all("#<title type='text'>(.*?)<\/title><content type='text'>#", $page, $matches);
  13.  
  14.  
  15.  
  16. foreach ($matches as $value) {
  17.  
  18. echo $value[1], '<br>';
  19. echo $value[2], '<br>';
  20. echo $value[3], '<br>';
  21. echo $value[4], '<br>';
  22. }
  23.  
  24.  
  25. ?>


.

.
Go to the top of the page
+Quote Post
Noidea
post 20.01.2011, 23:53:11
Post #11





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


To jest XML. Z tego się danych nie wyciąga wyrażeniami regularnymi.

  1. <pre>
  2. <?php
  3.  
  4. $c = curl_init();
  5. curl_setopt($c, CURLOPT_URL, 'http://gdata.youtube.com/feeds/api/users/mosadtracz/newsubscriptionvideos');
  6. curl_setopt($c, CURLOPT_HEADER, 0);
  7. curl_setopt($c, CURLOPT_NOBODY, 0);
  8. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  9. $page = curl_exec($c);
  10. curl_close($c);
  11.  
  12. $xml = new SimpleXMLElement( $page );
  13. foreach( $xml->entry as $entry )
  14. {
  15. echo $entry->title . "\n";
  16. }
  17.  
  18. ?>
  19. </pre>


--------------------
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: 17.08.2025 - 22:37