Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] szukanie wielu stringów
Forum PHP.pl > Forum > Przedszkole
Hectic
Witam, poszukuje funkcji która szuka wielu stringów i wrzuca je do tablicy, a nie tak jak ereg (znajduje tylko pierwszy).
lopez86
jeśli chodzi o znalezienie np. wszystkich stringów pasujących do jakiegoś wzorca w długim stringu to preg_match_all polecam smile.gif
Hectic
Teraz mam z nią problem:

  1. <?php
  2. preg_match_all("href="(.*)"", $this -> file_tpl_data, $date, PREG_PATTERN_ORDER);
  3. ?>

Kod
Warning: preg_match_all() [function.preg-match-all]: Delimiter must not be alphanumeric or backslash in C:\apache\httpdoc\forum\tpl.class.php on line 58

O co chodzi ? tongue.gif
webdice
W twoim przykładzie brakuje "ograniczników", jak je nazwał autor tego artykułu artykułu.
lopez86
  1. <?php
  2.  
  3.  
  4.  
  5. preg_match_all("@href="([a-z.:/0-9_-]*)"@i", "<a href="http://mojadomena.pl/cosik.php">drugi<a href="drugi.php">", $date, PREG_PATTERN_ORDER);
  6.  
  7.  
  8. print_r($date);
  9.  
  10.  
  11. ?>
webdice
Po co kombinować z jakimś strasznie rozbudowanym wyraźeniem, nie lepiej tak:

Kod
preg_match_all ('#href="([^"]+)"#', ...)
lopez86
W sumie fakt ja tam jednak wolę skomplikowanie bo wtedy mogę szybko zmodyfikować jakich url'i nie chcę np. takich z querystring tylko czyste domeny tak jak w tym przypadku . żeby wyciągnąć wszystkie trzeba jeszcze dodać kilka znaków w nawiasie kwadratowym. Ale jak kto woli , rzeczywiście tym prościej czasem lepiej.
webdice
Swego czasu pisałem funkcje do wyciągania linków z danej strony, trochę ją skróciłem bo nie widzę sensu wklejania tu całej.

  1. <?php
  2. function getLinks ($pageAddress)
  3. {
  4. $domObject = new domdocument ();
  5.  
  6. @$domObject -> loadhtml (file_get_contents ($pageAddress));
  7.  
  8. foreach ($domObject -> getelementsbytagname ('a') as $findLink) 
  9. {
  10. $findLinks[] = $findLink -> getattribute ('href');
  11. }
  12.  
  13. return $findLinks;
  14. }
  15. ?>


Użycie:

  1. <?php
  2. getLinks ('http://php.pl/');
  3. ?>
lopez86
jak zrobić preg matchem żeby zwracał array tylko z wartościami "trafionymi" we wzorcu bo jeżeli zwraca tak jak w moim przykładzie to zwraca też tablicę z href=" cośtam i drugą z samymi linkami (w sumie to dwuwymiarową) ale jak ja muszę np. 100 linków zamienić na swoje i zrobć inne rzeczy z treścią i wyświetlić w rozsądnym czasie w przeglądarce to jednak te kilka setnych sekundy się liczy dlatego chciałbym samą tablicę z trafionymi. Napewno się da ale ja nie pamiętam jak to się robiło . Wiem że czasem zadaje głupie pytania ale to też z faktu że takie lubie zadawać tongue.gif
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.