Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] wyszukiwanie w stringach
php__amator
post
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

Ostrzeżenie: (10%)
X----


Witajcie Świątecznie,

Potrzebuję podpowiedzi, wyszukuję w stringu określonego ciągu znaków i tu nie ma problemu, potrzebuję jednak do tego określonego dodać kolejnych kilka ale już bez sprawdzania co to jest. Powiedzmy że mam ciąg: Z-0.00000000, wyszukuję znaki "Z-" i do tego kolejnych 10 znajdujących się z prawej strony.

Jak je połączyć albo jak z tych 2 elementów zrobić jeden.

Dlaczego ?
Dlatego, że liczby znajdujące się za Z- zmieniają się a nie są potrzebne więc trzeba je wyciąć.

Jak ?

Tak wyglądają kody
G00 Z0.10000000
G00 X4.95970000 Y2.74900000
G01 Z-0.25000000
G01 X4.95970000 Y3.99320000
G00 Z0.10000000
G00 X4.95970000 Y2.74900000
G01 Z-0.50000000
G01 X4.95970000 Y2.74900000 Z-0.50000000
G01 X4.95970000 Y3.99320000
G00 Z0.10000000
G00 X4.95970000 Y2.74900000
G01 Z-0.75000000
tak wyglądają kody i chcę wyciąć/podmienić automatycznie np:

G00 Z0.10000000 => M3

G01 Z-0.25000000 => M5
itd
Ponieważ zmieniają się wartości muszą być traktowane jedynie jako długość stringu a nie co w nim jest
Gdyby stringi były stałe problemu by nie było.

Ze świątecznym pozdrowieniem
phpamator


Ten post edytował phpamator 25.12.2014, 19:10:16
Go to the top of the page
+Quote Post
untorched
post
Post #2





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

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


preg_replace powinno pomóc
Go to the top of the page
+Quote Post
php__amator
post
Post #3





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

Ostrzeżenie: (10%)
X----


Własnie z tym walczę ale zastosowanie str_replace nie bardzo robi to o co proszę.
Ponieważ ma brać pod uwagę blok "G01 Z-0.75000000" ale .... tylko pierwszych 5 znaków jest stałe, kolejnych 10 się zmienia wiec przy wyszukiwaniu musi wybierac te 5 + następnych 10 znaków
Go to the top of the page
+Quote Post
untorched
post
Post #4





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

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


Naucz się czytać i sprawdź co udostępniam! preg_replace a nie str_replace. Zasadnicza różnica!
Go to the top of the page
+Quote Post
php__amator
post
Post #5





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

Ostrzeżenie: (10%)
X----


Umiem czytać,
  1. // wyszukiwanie stringu G00 Zx.xxxxxxxx
  2. $str = preg_replace('/G00 Z[a-zA-Z0-9.]{10}/',"M3", $code);
  3.  
  4. // wyszukiwanie string G01 Zx.xxxxxxxx
  5. $str = preg_replace('/G01 Z[a-zA-Z0-9.]{10}/',"M3", $code);
  6.  
  7. // wyszukiwanie stringu G00 Z-x.xxxxxxxx - bardzo wazne zeby rozpoznawalo znak - od tego zalezy czy to M3 czy M5
  8. $str = preg_replace('/G00 Z-[A-Za-z0-9.]{10}/',"M5", $code);
  9.  
  10. // wyszukiwanie string G01 Z-x.xxxxxxxx
  11. $str = preg_replace('/G01 Z-[A-Za-z0-9.]{10}/',"M5", $code);
  12.  
  13. // wyszukiwanie stringu Zx.xxxxxxxx
  14. $str = preg_replace('/Z[a-zA-Z0-9.]{10}/',"M3", $code);
  15.  
  16. // wyszukiwanie string Z-x.xxxxxxxx
  17. $str = preg_replace('/Z-[a-zA-Z0-9.]{10}/',"M5", $code);
  18.  

Zobacz cie, o ile teoretycznie każda z tych linii wyszukuje i zamienia odpowiednią sekwencję na "Mx" to .... i tak nie chce działać jak ja tego potrzebuję

bo to: G00 Z0.10000000 G01 Z-0.25000000
G00 Z0.10000000 G01 Z-0.50000000
Z-0.50000000
G00 Z0.10000000 G01 Z-0.75000000
Z-0.75000000
Z-0.25000000
G00 Z0.10000000 G01 Z-0.50000000
Z-0.50000000
powinno wyglądać tak:
M3 M5
M3 M5
M5
M3 M5
M5
M5
M3 M5
M5
a wygląda tak (IMG:style_emoticons/default/sad.gif)

G00 Z0.10000000 G01 M5 G00 Z0.10000000 G01 M5 M5 G00 Z0.10000000 G01 M5 M5 M5 G00 Z0.10000000 G01 M5 M5

Ten post edytował phpamator 25.12.2014, 21:33:33
Go to the top of the page
+Quote Post
jackraymund
post
Post #6





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

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


Gdyż, wynik jest ostatnim replac'em.
A wyszukiwarka nie wyświetla znaku entera, natomiast w znaczniku <pre> zobaczysz je. Ew. możesz zamienić je na <br> za pomocą funkcji nl2br.
  1. $str = preg_replace('/G00 Z[a-zA-Z0-9.]{10}/',"M3", $code);
  2.  
  3. // wyszukiwanie string G01 Zx.xxxxxxxx
  4. $str = preg_replace('/G01 Z[a-zA-Z0-9.]{10}/',"M3", $str);
  5.  
  6. // wyszukiwanie stringu G00 Z-x.xxxxxxxx - bardzo wazne zeby rozpoznawalo znak - od tego zalezy czy to M3 czy M5
  7. $str = preg_replace('/G00 Z-[A-Za-z0-9.]{10}/',"M5", $str);
  8.  
  9. // wyszukiwanie string G01 Z-x.xxxxxxxx
  10. $str = preg_replace('/G01 Z-[A-Za-z0-9.]{10}/',"M5", $str);
  11.  
  12. // wyszukiwanie stringu Zx.xxxxxxxx
  13. $str = preg_replace('/Z[a-zA-Z0-9.]{10}/',"M3", $str);
  14.  
  15. // wyszukiwanie string Z-x.xxxxxxxx
  16. $str = preg_replace('/Z-[a-zA-Z0-9.]{10}/',"M5", $str);
  17. echo '<pre>'; // lub $str = nl2br($str);
  18. echo($str);


Ten post edytował jackraymund 25.12.2014, 22:47:02
Go to the top of the page
+Quote Post
php__amator
post
Post #7





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

Ostrzeżenie: (10%)
X----


Jak więc go zmusić, żeby zrobił po kolei zmiany uzywając kazdego z pokazanych wariantów ?
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: 12.10.2025 - 18:33