Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Specyficzne str_replace?
Forum PHP.pl > Forum > Przedszkole
Tilosag
  1. <?php
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  6. <meta http-equiv="Creation-date" content="2007-04-10T18:55:03Z">
  7. <meta name="Authoring-tool" content="Pajaczek NxG PRO v5.6.1">
  8. </head>
  9.  
  10. <body>
  11.  
  12. <form enctype="multipart/form-data" action="code.php" method="POST">
  13.  
  14. <table border="1">
  15. <tr>
  16. <td>
  17.  
  18. <!-- MAX_FILE_SIZE must precede the file input field -->
  19.  
  20. <!-- Name of input element determines name in $_FILES array -->
  21. Plik: <input name="plik" type="file" />
  22.  
  23.  
  24.  
  25. </td>
  26. </tr>
  27. <tr>
  28. <td>Potworek by&#322; na pozycji:</td>
  29. <td>Potworek jest na pozycji:</td>
  30. </tr>
  31. <tr>
  32. <td>X
  33. <input type="text" name="x1" value="" /></td>
  34. <td>X
  35. <input type="text" name="x2" value="" /></td>
  36. </tr>
  37. <tr>
  38. <td>Y
  39. <input type="text" name="y1" value="" /></td>
  40. <td>Y
  41. <input type="text" name="y2" value="" /></td>
  42. </tr>
  43. <tr>
  44. <td>Z
  45. <input type="text" name="z1" value="" /></td>
  46. <td>Z
  47. <input type="text" name="z2" value="" /></td>
  48. </tr>
  49. </table>
  50.  
  51. <table width="100$" height="100%">
  52. <tr>
  53. <td align="center" valign="middle" width="300px">
  54. <input type="submit" name="submit" value="Wykonaj" /></td>
  55. </tr>
  56. </table>
  57.  
  58. </form>
  59.  
  60. </body>
  61. </html>
  62. ?>


  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  5. <meta http-equiv="Creation-date" content="2007-04-10T19:49:52Z">
  6. <meta name="Authoring-tool" content="Pajaczek NxG PRO v5.6.1">
  7. </head>
  8. <body>
  9.  
  10.  
  11.  
  12. <?php
  13. $roznicax=$_POST['x2']-$_POST['x1'];
  14. $roznicay=$_POST['y2']-$_POST['y1'];
  15. $roznicaz=$_POST['z2']-$_POST['z1'];
  16.  
  17. print("Różnica X: $roznicax");
  18. print('<br />');
  19. print("Różnica Y: $roznicay");
  20. print('<br />');
  21. print("Różnica Z: $roznicaz");
  22.  
  23.  
  24.  
  25. $uploaddir = '/Program Files/WebServ/httpd/spawn/XML/';
  26. $uploadfile = $uploaddir . basename($_FILES['plik']['name']);
  27.  
  28. echo '<pre>';
  29. if (move_uploaded_file($_FILES['plik']['tmp_name'], $uploadfile)) {
  30. echo "Pierwszy stpień obliczeń - DONE.n";
  31. } else {
  32. echo "Possible file upload attack!n";
  33. }
  34.  
  35. print "</pre>";
  36.  
  37. $fd=fopen($uploadfile,"r+");
  38. $fstring = fread($fd , 10000); // jak zrobić, żeby zamiast 10000 było filesize, tyle że do pliku $plik , który się znajduje w folderze podrzędnym spawn??
  39.  
  40. $replace = str_replace('x="', "x=[0-9]+$roznicax", $fd); // <-- najważniejszy kawałek
  41.  
  42. $fout=fwrite($fd, $replace);
  43.  
  44.  
  45. ?>
  46.  
  47. </body>
  48. </html>



Jak zrobić tak, żeby szukał w pliku x=" (tu jakakolwiek wartość liczbowa) " , a później dodawał do niej $różnicax questionmark.gif?

Oczywiście wszystkie x= mają być zmienione.

I żeby zapisywał wszystko do folderu /gotowe/

To co zrobiłem, działa... kulawo tongue.gif
nospor
Ponizszy przyklad doda 5:
  1. <?php
  2. function addToX($matches)
  3. {
  4. return 'x="'.($matches[1]+5).'"';
  5. }
  6. $text = 'x="1" asladosa x="3" sad sadasdasd x="4"';
  7. $search = '/x="(d+)"/';
  8. $search,
  9. "addToX",
  10. $text);
  11. ?>

Ty sobie przerob by dodawal tyle co chcesz tongue.gif

Cytat
jak zrobić, żeby zamiast 10000 było filesize, tyle że do pliku $plik , który się znajduje w folderze podrzędnym spawn
No to zrob pelna sciezke do tego pliku i juz
Tilosag
Cytat
'/x="(\d+)"/'



Gdzie mogę znaleźć trochę wiedzy na temat jak ustawiać takie bajery?

deee nie kumam tego:
  1. <?php
  2. function szukaj($matches) // do czego mają służyć matches i co to za zmienna?
  3. {
  4. return 'x="'.($matches[1]+0).'"'; // return x , czyli żeby wyświetlił X , tak?
  5. }
  6. $text = 'x="1" asladosa x="3" sad sadasdasd x="4"';
  7. $search = '/x="(d+)"/';
  8. echo preg_replace_callback( //1. argument to Text do szukania, drugi to funkcja którą ma powtórzyć i 3 to Text?questionmark.gif
  9. $search,
  10. "szukaj",
  11. $text);
  12. ?>
nospor
Cytat
Gdzie mogę znaleźć trochę wiedzy na temat jak ustawiać takie bajery?

Poszukaj jakiegos kursu do wyrazen regularnych

Cytat
do czego mają służyć matches i co to za zmienna?

Cytat
1. argument to Text do szukania, drugi to funkcja którą ma powtórzyć i 3 to Text?questionmark.gif

Zajrzyj do manuala co robi preg_replace_callback(), jakie przyjmuje parametry a nie sie ..... pytasz.

Cytat
return 'x="'.($matches[1]+0).'"'; // return x , czyli żeby wyświetlił X , tak?
e? teraz dodajesz 0, to jesli miales x="2" to nadal bedziesz mial x="2" bo 2 + 0 = 2

ps:
..... - mialo byc "głupio" ale ponoc nie ma głupich pytan winksmiley.jpg
Tilosag
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  5. <meta http-equiv="Creation-date" content="2007-04-11T11:32:31Z">
  6. <meta name="Authoring-tool" content="Pajaczek NxG PRO v5.6.1">
  7. </head>
  8. <body>
  9.  
  10.  
  11.  
  12. <?php
  13. $roznicax=$_POST['x2']-$_POST['x1'];
  14. $roznicay=$_POST['y2']-$_POST['y1'];
  15. $roznicaz=$_POST['z2']-$_POST['z1'];
  16.  
  17. print("Różnica X: $roznicax");
  18. print('<br />');
  19. print("Różnica Y: $roznicay");
  20. print('<br />');
  21. print("Różnica Z: $roznicaz");
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. $uploaddir = '/Program Files/WebServ/httpd/spawn/XML/';
  29. $uploadfile = $uploaddir . basename($_FILES['plik']['name']);
  30.  
  31. echo '<pre>';
  32. if (move_uploaded_file($_FILES['plik']['tmp_name'], $uploadfile)) {
  33. echo "Pierwszy stpień obliczeń - DONE.n";
  34. } else {
  35. echo "Possible file upload attack!n";
  36. }
  37.  
  38. print "</pre>";
  39.  
  40. if ($fd=fopen($uploadfile,"r+"))
  41. {
  42. print "fopen done <br />";
  43. }
  44. if ($fstring = fread($fd , filesize($uploadfile)))
  45. {
  46. print "fread done <br />";
  47. }
  48. if (print ($fstring))
  49.  {
  50. print 'print done <br />';
  51. }
  52.  
  53. //$replace = preg_replace_callback('/x="(d+)"/', )
  54. /*
  55. function addToX($matches)
  56. {
  57.   return 'x="'.($matches[1]+"$roznicax").'"';
  58. }
  59. $text = "$fstring";
  60. $search = '/x="(d+)"/';
  61. $replace = preg_replace_callback(
  62. $search,
  63. "addToX",
  64. $text);
  65.  
  66.  
  67.  
  68. $fout=fwrite($fd, $replace);
  69.  
  70.  
  71. */
  72.  
  73. ?>


To jest jakieś dziwne!!!

Ten skrypt nie zmienia ani literki w pliku!!! ;/

  1. żnica X: 580
  2. żnica Y: 0
  3. żnica Z: 0
  4.  
  5. Pierwszy stpień obliczeń - DONE.
  6.  
  7. fopen done
  8. fread done
  9. print done


/\ to wszystko, co wyświetla...
nospor
Cytat
Ten skrypt nie zmienia ani literki w pliku!!! ;/

1) wykomentowales kod ktory zmienia, wiec sie nie dziw ze nie zmienia
2) twoj plik ma taka strukture X: 580, a podales wczesniej by zamienial taka: x="tuliczba" wiec znowu sie niedziw....
3) return 'x="'.($matches[1]+"$roznicax").'"'; - $roznicax nie bedzie widoczna w tej funkcji. poczytaj o zasiegu:
http://pl.php.net/manual/pl/language.variables.scope.php
Tilosag
Kod
<spawn centerx="808" centery="459" centerz="8" radius="7">
<monster name="Rat" x="0" y="-1" spawntime="80"/>
<monster name="Rat" x="-1" y="1" spawntime="60"/>
<monster name="Rat" x="1" y="0" spawntime="60"/>
<monster name="Rat" x="1" y="6" spawntime="80"/>
</spawn>
<spawn centerx="817" centery="461" centerz="8" radius="7">
<monster name="Rat" x="1" y="-1" spawntime="100"/>
<monster name="Rat" x="-2" y="2" spawntime="70"/>
<monster name="Rat" x="0" y="3" spawntime="60"/>
<monster name="Rat" x="0" y="-7" spawntime="60"/>

1. Nawet z kodem nic nie zmienia.
2. Ma strukturę x=" "!
3. Czyli :

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  5. <meta http-equiv="Creation-date" content="2007-04-11T11:32:31Z">
  6. <meta name="Authoring-tool" content="Pajaczek NxG PRO v5.6.1">
  7. </head>
  8. <body>
  9.  
  10.  
  11.  
  12. <?php
  13. $GLOBALS['$roznicax']=$_POST['x2']-$_POST['x1'];
  14. $GLOBALS['$roznicay']=$_POST['y2']-$_POST['y1'];
  15. $GLOBALS['$roznicaz']=$_POST['z2']-$_POST['z1'];
  16.  
  17. print("Różnica X: $roznicax");
  18. print('<br />');
  19. print("Różnica Y: $roznicay");
  20. print('<br />');
  21. print("Różnica Z: $roznicaz");
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. $uploaddir = '/Program Files/WebServ/httpd/spawn/XML/';
  29. $uploadfile = $uploaddir . basename($_FILES['plik']['name']);
  30.  
  31. echo '<pre>';
  32. if (move_uploaded_file($_FILES['plik']['tmp_name'], $uploadfile)) {
  33. echo "Pierwszy stpień obliczeń - DONE.n";
  34. } else {
  35. echo "Possible file upload attack!n";
  36. }
  37.  
  38. print "</pre>";
  39.  
  40. if ($fd=fopen($uploadfile,"r+"))
  41. {
  42. print "fopen done <br />";
  43. }
  44. if ($fstring = fread($fd , filesize($uploadfile)))
  45. {
  46. print "fread done <br />";
  47. }
  48. if (print ($fstring))
  49.  {
  50. print 'print done <br />';
  51. }
  52.  
  53. //$replace = preg_replace_callback('/x="(d+)"/', )
  54.  
  55. function addToX($matches) //credits to nospor
  56. {
  57. return 'x="'.($matches[1]+$GLOBALS['$roznicax']).'"';
  58. }
  59. $text = "$fstring";
  60. $search = '/x="(d+)"/';
  61. $replace = preg_replace_callback(
  62. $search,
  63. "addToX",
  64. $text);
  65.  
  66.  
  67.  
  68. $fout=fwrite($fd, $replace);
  69.  
  70.  
  71.  
  72. ?>
  73.  
  74. </body>
  75. </html>
nospor
ad2) sorki, zle zrozumialem to co pokazales

No ale nie zauwazyles, ze kod:
  1. <?php
  2. if (print ($fstring))
  3.  {
  4. print 'print done <br />';
  5. }
  6. ?>

Wyswietla ci tylko "print done" a powinien jeszcze wyswietlic zawartosc pliku? Skoro nie wyswietlil to mozna sie domyslic ze nie wczytal, jak nie wczytal to tym bardziej funkcja ci tego nie zmieni skoro nie ma co zmieniac. smile.gif
Tilosag
Poddaje się, za Chiny nie mogę zrobić zmiennej globalnej. Nigdy nie wyświetla mi wyniku wewnątrz funkcji, a w manualu jest napisane, że

[zmoderowane]
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.