Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pytanie o funckje preg_match
Forum PHP.pl > Forum > Przedszkole
mirkus
Witam mam malutki problem z którym nie mogę sobie poradzić może banalny bo chodzi zapewne o jakis / lub \ a nie moge go jakos zlokalizowac sad.gif

Wiec tak chce wyciagnąc z pliku tekstowego fragment tekstu (tekst pogrubiony chce pobrac do zmiennej $znalezione).

$ert[$k] przechowuje plik tekstowy gdzie kazdy wiersz jest zapisany w tabeli
$tablica[$i] przechwuje nazwe GS300 a takze inne nazwy ktore pozniej beda wyszukiwane.

Nazwe GS300 jest zapisana w tablicy:

<owl:Class rdf:about="#GS300">
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
</owl:Class>
</rdfs:subClassOf>

</owl:Class>

a oto moje formulka wycigajaca tekst:
for($i=0; $i<5; $i++)
{
for ($k=0; $k=100; $k++)
{
preg_match ("/<owl:Class rdf:about=\"#($tablica[$i])\<\/owl:Class/>\/is", $ert[$k], $znalezione);
}
}

zapewne chodzi o jakisz / lub \ ale probuje na rozne sposoby i jakos nie wychodzi wiec prosze Was o pomoc
ptq
Tak sobie pisałem i na własnych danych napisałem coś takiego, może coś z tego WYMYŚLISZ SAM winksmiley.jpg ale to akurat wyciąga te dane co chcesz, wystarczy dopasować do tego co ty tam masz, ale to już twoja twórczość, powodzenia smile.gif

  1. $tablica[0]='GS300';
  2.  
  3. $ert=array(
  4. 0 => '<owl:Class rdf:about="#GS300">',
  5. 1 => '<rdfs:subClassOf>',
  6. 2 => '<owl:Class>',
  7. 3 => '<owl:intersectionOf rdf:parseType="Collection">',
  8. 4 => '</owl:Class>',
  9. 5 => '</rdfs:subClassOf>',
  10. 6 => '</owl:Class>',
  11. 7 => 'aza'
  12. );
  13. $save=false;
  14. $records=array();
  15. $k=0;
  16. $j=0;
  17.  
  18.  
  19. for ($i=0;$i<count($ert);$i++) {
  20.  
  21. if (preg_match('/<owl:Class\srdf:about="#+'.$tablica[0].'+">+$/',$ert[$i])) {
  22. $save=true;
  23. }
  24.  
  25. if ($k==5) {
  26. $save=false;
  27. $k=0;
  28. $j++;
  29. }
  30.  
  31. if ($save==true) {
  32. $records[$j][$k]=$ert[($i+1)];
  33. $k++;
  34. }
  35.  
  36. }
  37.  
  38.  
  39.  
  40. for ($a=0;$a<count($records);$a++) {
  41.  
  42. for ($b=0;$b<count($records[$a]);$b++) {
  43. echo $records[$a][$b].'<br />';
  44. }
  45.  
  46. }
mirkus
Dzieki wielkie ale poradzilem sobie w inny sposóba a mianowicie tak ze wczytalem plik tekstowy jako ciag znakow za pomoca file_get_contents i pozniej stworzylem
preg_match ("/<owl:Class rdf:about=\"#" . $tablica[$i]. "\">(.*?)<\/owl:Class>/is", $sposob, $poszukaj);

i poszlo smile.gif ale dzieki Twoj sposob tez fajnie rozwiazany smile.gif


Mam jeszcze jedno pytanko:
Zmienna wynik ma wartosci 1 spacja 2 spacja 3 spacja

$wynik = 1 spacja 2 spacja 3 spacja;

jak rozdzielic ta zmienna na 3 rozne zmienne i zapisac do tablicy sad.gif
tab[0] = 1;
tab[1] = 2;
tab[2] = 3;


Juz wiem ale ja glupi jestem funkcja explode i po sprawie smile.gif
blooregard
  1. explode(' spacja' , $wynik);
mirkus
Witam mam do was kolejne pytanie:

Jak przeszukać fragment tekstu i zapisać go do tablicy jako osobne linie:

Przykładowo mamy plik tekst.txt
ala ma psa
ten pies ma na imie azor
azor ma czarna sierc
ale brzydki ten pies


wczytujemy plik

$nazwa_pliku = "d:\\tekst.txt";

$ert = file($nazwa_pliku);

Robimy przeszukanie:

preg_match ("ala ma psa(.*?)\ale brzydki ten pies/is", $ert[$i], $znalezione);

w zmiennej $znalezione powinno sie zapisac
$znalezione = ten pies ma na imie azor azor ma czarna sierc

jak zapisac go tak aby byl zgodny z tekstem orginalnym w tablicy:
tab[0] = ten pies ma na imie azor
tab[1]= azor ma czarna sierc

proszę Was o pomoc


ptq
Sorry że nic nie wniosę tym razem do tematu, ale czy mi się wydaję, czy piszesz samo aktualizującą się stronę www? smile.gif
mirkus
Witam

Jak wyodbębić taki fragment kodu za pomocą za pomocą funckji preg_match aby również były wyświtelane metaznaki (podobno można połączyć to za pomocą preg_quete) ale jakos probuje i nie daje rady:
zastosowanie samej funkcji preg_match nie powoduje prawidłowego wyświetlenia sad.gif

Kod
<owl:Class rdf:about="Dana1">
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#zmienna1"/>
                        <owl:hasValue>wynik1</owl:hasValue>
                    </owl:Restriction>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#zmienna2"/>
                        <owl:hasValue>wynik2</owl:hasValue>
                    </owl:Restriction>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#zmienna3"/>
                        <owl:hasValue>wynik3</owl:hasValue>
                    </owl:Restriction>
</owl:Class>



ps: Niestety nie pisze taki programik który wyciągnie z rdf dane a następnie zapisze je w xml czystym

z góry dzięki za pomoc
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.