Avatar billede taager-kongen Nybegynder
14. august 2003 - 20:38 Der er 63 kommentarer og
3 løsninger

find kilde.

Hejza. har et mærkelig spm :D.
skal bruge en kode som henter et dokument (html/txt) og skal kunne søge i den. Det skal finde et sted hvor der eks stor

navn ="rasmus";
og ligger rasmus ned i en variabel.. Kan nogen det?
Avatar billede bearhugx Nybegynder
14. august 2003 - 20:41 #1
$data = file_get_contents("URL_TIL_FILEN");
$namePos = strpos($data, "navn =")+7;
$nameStr = substr( $str, $namePos );
$name = substr( $nameStr, 0, strpos($nameStr, "\"") );

så skulle rasmus gerne være i $name;
Avatar billede taager-kongen Nybegynder
14. august 2003 - 20:43 #2
namePos = strpos($data, "navn =")+7; --> +7 ? skal det være noget andet hvis det inden er i lægere?
Avatar billede bearhugx Nybegynder
14. august 2003 - 20:43 #3
omend jeg er sikker på at det kan gøres mere elegant via regExp osv  -- eller hvis PHP har et funktionsbibliotek til håndtering af
  key="value"
data...
Avatar billede taager-kongen Nybegynder
14. august 2003 - 20:47 #4
jeg for altså fejl...:
Fatal error: Call to undefined function: file_get_contents() in c:\inetpub\wwwroot\rasmus\12send\test.php on line 2

Linjien er som eks.:
www.rasmusmadsen.dk/test/index.php?id=20

Kan du klare den?
Avatar billede bearhugx Nybegynder
14. august 2003 - 20:47 #5
namePos markerer starten på strengen [navn ="rasmus".........]
da vi først skal læse fra efter det første " ,så skal vi 7 pladser fremad
n a v n _ = " r a s m u s "
1 2 3 4 5 6 7|

resultatet er at $nameStr bliver
  rasmus" .....

den sidste kommando
  $name = substr( $nameStr, 0, strpos($nameStr, "\"") );

skærer alt efter " væk så vi står tilbage med
  rasmus
Avatar billede taager-kongen Nybegynder
14. august 2003 - 20:48 #6
jeg for altså fejl...:
Fatal error: Call to undefined function: file_get_contents() in c:\inetpub\wwwroot\rasmus\12send\test.php on line 2

Linjien er som eks.:
www.rasmusmadsen.dk/test/index.php?id=20

Kan du klare den?
Avatar billede bearhugx Nybegynder
14. august 2003 - 20:48 #7
må jeg se php-koden, hvor du bruger file_get_contents
Avatar billede taager-kongen Nybegynder
14. august 2003 - 20:51 #8
<?php
$her = "http://80.160.115.22/rasmus/mere.php?id=2";
echo $her;
$data = file_get_contents($her);
$namePos = strpos($data, "navn =")+7;
$nameStr = substr( $str, $namePos );
$name = substr( $nameStr, 0, strpos($nameStr, "\"") );
echo $name;
?>
Avatar billede bearhugx Nybegynder
14. august 2003 - 20:52 #9
hmmm .. har lige opdaget at file_get_contents() er en forholdsvis ny funktion ... men her er et workarround :

function file_get_contents($filename, $use_include_path=0) {
  /* reads out the complete contents of $filename */
  $handle = fopen ($filename, "r",$use_include_path);
  $contents = fread ($handle, filesize ($filename));
  fclose ($handle);
  return $contents;
}

som du bare føjer ind i dit script _inden_ du bruger file_get_contents()
Avatar billede bearhugx Nybegynder
14. august 2003 - 20:53 #10
så din kode vil blive


<?php
  function file_get_contents($filename, $use_include_path=0) {
    /* reads out the complete contents of $filename */
    $handle = fopen ($filename, "r",$use_include_path);
    $contents = fread ($handle, filesize ($filename));
    fclose ($handle);
    return $contents;
  }

  $her = "http://80.160.115.22/rasmus/mere.php?id=2";
  echo $her;
  $data = file_get_contents($her);
  $namePos = strpos($data, "navn =")+7;
  $nameStr = substr( $str, $namePos );
  $name = substr( $nameStr, 0, strpos($nameStr, "\"") );
  echo $name;
?>
Avatar billede taager-kongen Nybegynder
14. august 2003 - 20:53 #11
tætter men mere fejl:
http://80.160.115.22/rasmus/mere.php?id=2
Warning: stat failed for http://80.160.115.22/rasmus/mere.php?id=2 (errno=2 - No such file or directory) in c:\inetpub\wwwroot\rasmus\12send\test.php on line 5

Notice: Undefined variable: str in c:\inetpub\wwwroot\rasmus\12send\test.php on line 13
Avatar billede bearhugx Nybegynder
14. august 2003 - 20:55 #12
ohh .. lige et hurtigt fix-up

<?php
  function file_get_contents($filename, $use_include_path=0) {
    /* reads out the complete contents of $filename */
    $handle = fopen ($filename, "r",$use_include_path);
    $contents = fread ($handle, filesize ($filename));
    fclose ($handle);
    return $contents;
  }

  $her = "http://80.160.115.22/rasmus/mere.php?id=2";
  echo $her;
  $data = file_get_contents($her);
  $namePos = strpos($data, "navn =")+7;
  $nameStr = substr( $data, $namePos );
  $name = substr( $nameStr, 0, strpos($nameStr, "\"") );
  echo $name;
?>
Avatar billede taager-kongen Nybegynder
14. august 2003 - 20:56 #13
tættere men ikke tæt nok :D :
http://80.160.115.22/rasmus/mere.php?id=2
Warning: stat failed for http://80.160.115.22/rasmus/mere.php?id=2 (errno=2 - No such file or directory) in c:\inetpub\wwwroot\rasmus\12send\test.php on line 5
Avatar billede bearhugx Nybegynder
14. august 2003 - 20:57 #14
hvad version af php bruger du...
Avatar billede taager-kongen Nybegynder
14. august 2003 - 20:57 #15
ingen ide.. :( hvordan finder jeg ud af det? sorry hvis det lyder dumt..
Avatar billede taager-kongen Nybegynder
14. august 2003 - 20:58 #16
prøver lige det mit dominw.. to sec..
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:00 #17
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:06 #18
nogen ideR?
Avatar billede bearhugx Nybegynder
14. august 2003 - 21:06 #19
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:07 #20
den er tilbage igen.. prøvede lige at omdåbe den til txt, for at se om fejlen var der..
Avatar billede bearhugx Nybegynder
14. august 2003 - 21:07 #21
Avatar billede bearhugx Nybegynder
14. august 2003 - 21:08 #22
jeg kan fint nok hente "rasmus" ud -- har du fundet ud af, hvad din php-version er...
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:09 #23
nej ved du nogen jeg finder ud af det?
Avatar billede bearhugx Nybegynder
14. august 2003 - 21:09 #24
prøv at lav en fil med følgende indhold

<?php
  phpinfo();
?>

så får du det at vide
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:12 #25
php 4 kan det passe?
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:13 #26
hvad har du?
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:18 #27
kunne du hjælpe mig videre?
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:26 #28
har prøvet en anden kode (en helt anden) som også åber en dokument, lavet til word. Den kan heller ikke finde filen :( er det min com?
Avatar billede detox Nybegynder
14. august 2003 - 21:35 #29
Kunne det tænkes du ikke har slået fopen wrapper til i din php.ini?
Prøv og tjekke denne linie:
allow_url_fopen = On
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:36 #30
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On


står der hos mig, hvad skal der stå?
Avatar billede detox Nybegynder
14. august 2003 - 21:37 #31
Den skulle være ok.
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:39 #32
detox --> hvad for en? den med on?
Avatar billede detox Nybegynder
14. august 2003 - 21:43 #33
Ja
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:43 #34
ok.. har du andre ider?
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:46 #35
bearhugx --> har du nogen ider?
Avatar billede detox Nybegynder
14. august 2003 - 21:49 #36
Det her virker her, hvis jeg har forstået spørgsmålet:

<?
  function contents($filename, $use_include_path=0) {
    /* reads out the complete contents of $filename */
    $handle = fopen ($filename, "r",$use_include_path);
    $contents = fread ($handle, 20000);
    fclose ($handle);
    return $contents;
  }


  $her = "http://80.160.115.22/rasmus/mere.php?id=2";
  echo $her;
  $data = contents($her);
  $namePos = strpos($data, "rasmus");
  $name = substr($data, $namePos, 6 );
  echo "<br />" . $name;
?>
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:50 #37
det virker.. .Hurra........ Svar lige... Jes man
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:52 #38
nej der lille fejl i den kode.. Jeg ved ikke hvad navnet er. $namePos = strpos($data, "rasmus");

det skal den finde... det vil være forskelligt.. kan du klare den?
Avatar billede squashguy Nybegynder
14. august 2003 - 21:54 #39
detox.. du leder efter "rasmus" i teksten, trækker "rasmus" ud.. lol for en omvej for at udskrive rasmus :o)
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:55 #40
squashguy --> hvis du læser spm vil du se det ikke er det jeg vil..
Avatar billede squashguy Nybegynder
14. august 2003 - 21:55 #41
yep, i know.. det var bare en bemærkning til detox :)
Avatar billede taager-kongen Nybegynder
14. august 2003 - 21:56 #42
detox --> er du der endnu? der stadig denne lille fejl :(
Avatar billede bearhugx Nybegynder
14. august 2003 - 21:59 #43
var lige væk - havde nogle andre ting at se til...
Avatar billede squashguy Nybegynder
14. august 2003 - 22:00 #44
prøv denne

preg_match("/name=\"(.*)\"/", $str, $match);
$name = $match[1];
Avatar billede bearhugx Nybegynder
14. august 2003 - 22:01 #45
jeg har php 4.3 -- og da fopen også tidligere end ver. 4 har skulle kunne klare åbning af http://, så kan jeg ikke forstå, hvorfor den ikke vil åbne URL'en i $her -- kan det være at det har noget med at der er ?id=2 i ????
Avatar billede taager-kongen Nybegynder
14. august 2003 - 22:01 #46
er ikke så god til det.. hvor?
Avatar billede squashguy Nybegynder
14. august 2003 - 22:01 #47
i forhold til detoxs eksempel:


preg_match("/navn=\"(.*)\"/", $data, $match);
$name = $match[1];
Avatar billede taager-kongen Nybegynder
14. august 2003 - 22:03 #48
fejl i linje 17 preg_match("/navn=\"(.*)\"/", $data, $match); koden:
<?
  function contents($filename, $use_include_path=0) {
    /* reads out the complete contents of $filename */
    $handle = fopen ($filename, "r",$use_include_path);
    $contents = fread ($handle, 20000);
    fclose ($handle);
    return $contents;
  }


  $her = "http://80.160.115.22/rasmus/mere.php?id=2";
  echo $her;
  $data = contents($her);
  $namePos = strpos($data, "rasmus");
  $name = substr($data, $namePos, 6 );
preg_match("/navn=\"(.*)\"/", $data, $match);
$name = $match[1];
  echo "<br />" . $name;
?>
Avatar billede detox Nybegynder
14. august 2003 - 22:07 #49
hmm, kunne heller ikke lige se logikken ;-)

<?
  function contents($filename, $use_include_path=0) {
    /* reads out the complete contents of $filename */
    $handle = fopen ($filename, "r",$use_include_path);
    $contents = fread ($handle, 20000);
    fclose ($handle);
    return $contents;
  }


  $her = "http://80.160.115.22/rasmus/mere.php?id=2";
  echo $her;
  $data = contents($her);
  preg_match("/navn=\"(.*)\"/", $data, $match);
  $name = $match[1];
  echo "<br />" . $name;
?>

Men den finder ikke noget der passer til regexp'en.
Avatar billede taager-kongen Nybegynder
14. august 2003 - 22:08 #50
den melder fejl i linje 17
Avatar billede squashguy Nybegynder
14. august 2003 - 22:09 #51
tilpasset så der må være mellemrum

preg_match("/name *= *\"([^\"]*)/", $str, $match);
$name = $match[1];
Avatar billede detox Nybegynder
14. august 2003 - 22:09 #52
Sådan her:

<?
  function contents($filename, $use_include_path=0) {
    /* reads out the complete contents of $filename */
    $handle = fopen ($filename, "r",$use_include_path);
    $contents = fread ($handle, 20000);
    fclose ($handle);
    return $contents;
  }


  $her = "http://80.160.115.22/rasmus/mere.php?id=2";
  echo $her;
  $data = contents($her);
  preg_match("/navn = \"(.*)\"/", $data, $match);
  $name = $match[1];
  echo "<br />" . $name;
?>
Avatar billede taager-kongen Nybegynder
14. august 2003 - 22:09 #53
ja takker... MEGET.. hvem skal have points?
Avatar billede detox Nybegynder
14. august 2003 - 22:10 #54
squashguy-> hehe, det er du skrap til!
Avatar billede detox Nybegynder
14. august 2003 - 22:11 #55
Tja, måske hvis vi kunne dele den i tre.
Avatar billede bearhugx Nybegynder
14. august 2003 - 22:11 #56
jeg vil sige at squashguys metode med regExp er langt mere "nice" end mit substring-lir :-)
Avatar billede taager-kongen Nybegynder
14. august 2003 - 22:15 #57
nu er mere.php:
<?php
echo "hejza";
?>
<SCRIPT LANGUAGE=JAVASCRIPT>
<!--

navn ="claus";

//-->
</SCRIPT>

Så kan den ikke finde navnet.. Kan man lave om på det?
Avatar billede detox Nybegynder
14. august 2003 - 22:15 #58
Ja, det er vidst en god idé at beherske de der regexp!
Avatar billede detox Nybegynder
14. august 2003 - 22:18 #59
Med squashguy's sidste rettelse:

<?
  function contents($filename, $use_include_path=0) {
    /* reads out the complete contents of $filename */
    $handle = fopen ($filename, "r",$use_include_path);
    $contents = fread ($handle, 20000);
    fclose ($handle);
    return $contents;
  }


  $her = "http://80.160.115.22/rasmus/mere.php?id=2";
  echo $her;
  $data = contents($her);
  preg_match("/navn *= *\"(.*)\"/", $data, $match);
  $name = $match[1];
  echo "<br />" . $name;
?>
Avatar billede bearhugx Nybegynder
14. august 2003 - 22:18 #60
preg_match("/navn\s*=\s*\"(.*)\"/", $data, $match);
Avatar billede taager-kongen Nybegynder
14. august 2003 - 22:21 #61
takker svarer i to andre?
Avatar billede squashguy Nybegynder
14. august 2003 - 22:22 #62
korrekt, regulære udtryk styrer :)

svar
Avatar billede bearhugx Nybegynder
14. august 2003 - 22:23 #63
squashguy >>

vil både
  " *" og "\s*"
fange 0+ spaces ???
Avatar billede squashguy Nybegynder
14. august 2003 - 22:25 #64
ja. \s vil dog fange alle white spaces.
Avatar billede bearhugx Nybegynder
14. august 2003 - 22:29 #65
well.. jeg har små sommerfugle i maven - det er første gang at jeg har kunne kigge på et regExp udtryk og så fatte præcis, hvordan det fungerer - unden at skulle slå en masse op :-)))

men der går nok et stykke tid før jeg selv kan hive sådanne ud af ærmet selv :-)
Avatar billede detox Nybegynder
14. august 2003 - 22:32 #66
c",)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester