Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML] Specyficzne str_replace?, Howto?
Tilosag
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 10.04.2007

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


  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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

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

I żeby zapisywał wszystko do folderu /gotowe/

To co zrobiłem, działa... kulawo (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował Tilosag 10.04.2007, 21:21:01
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
Tilosag
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 10.04.2007

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


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?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
  9. $search,
  10. "szukaj",
  11. $text);
  12. ?>


Ten post edytował Tilosag 11.04.2007, 12:19:11
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?(IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Tilosag
post
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 10.04.2007

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


  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...

Ten post edytował Tilosag 11.04.2007, 12:53:01
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
Tilosag
post
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 10.04.2007

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


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>
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Tilosag
post
Post #9





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 10.04.2007

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


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]

Ten post edytował nospor 15.04.2007, 15:26:27
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 07:57