Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP] Szukanie w stringu zdania
michuwsh
post 18.10.2021, 14:37:07
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 1.03.2016

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


Cześć,

Zwracam się do was o pomoc bo nie wiem już jak poradzić sobie z moim przypadkiem. Napisałem Skrypt który za pomocą curl wchodzi na konkretną stronę pobiera jej zawartość a następnie na podstawie odpowiedzi przeprowadzą weryfikacje zwróconej treści.

  1. function checkUrl($url) {
  2. $ch = curl_init();
  3.  
  4. curl_setopt($ch, CURLOPT_USERAGENT, USER_AGENT);
  5. curl_setopt($ch, CURLOPT_URL, $url);
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  7. $output = [
  8. 'html' => curl_exec($ch),
  9. 'info' => curl_getinfo($ch)
  10. ];
  11.  
  12. curl_close($ch);
  13.  
  14. return $output;
  15.  
  16. }



Następnie za pomocą fragmentu kodu sprawdzam czy zawartość w tablicy znajduje się w kodzie html który znajduje się pod zmienną $response['html']

  1. //Check content
  2.  
  3. $content = '';
  4.  
  5. if ( !empty($value['content']) ) {
  6. if ( strpos($response['html'], $value['content'] ) !== false) ) {
  7. $content = 'Treść znajduje się na stronie!';
  8. }
  9.  
  10. }


Niestety podany fragment kodu nie zwraca mi poprawnie informacji czy zawartość w zmiennej $value['content'] znajduje się w zmiennej $response['html']. Czy jest ktoś chętny rozwiązać tą zagadkę?

Go to the top of the page
+Quote Post
nospor
post 18.10.2021, 14:42:24
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




zrob VAR_DUMP na tym co szukasz i na tym w czym szukasz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michuwsh
post 18.10.2021, 14:51:39
Post #3





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 1.03.2016

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


  1. var_dump($string);
  2. var_dump($test['html']);


$string - zawiera to co szukam

$test['html'] - zawiera kod html

  1. string(147) "Co to ..."
  2. string(70129) "<!DOCTYPE html ...>



Zmienna $string zawiera się w zmiennej $test['html'] a strpos zwraca False
Go to the top of the page
+Quote Post
nospor
post 18.10.2021, 14:53:28
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Nie widze tutaj

string(70129) "<!DOCTYPE html ...>

tego co szukasz. Prosze jeszcze raz, przeczytaj dokladnie tym razem:
podaj dokladnie to co zwraca VAR_DUMP dla tego co szukasz, oraz pokaz wycinek tego w czym szukasz, gdzie rzekomo szukany tekst sie znajduje. Inaczej mozemy bawic sie tak do rana. Mi nie zalezy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michuwsh
post 18.10.2021, 15:01:16
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 1.03.2016

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


Przepraszam myślałem że chodzi tobie o typy danych czy są takie same, natomiast nie chciałem dawać całego kody html żeby nie spamować forum.

Natomiast wrzuciłem to na swój zdalny serwer http://serwer90650.lh.pl/checker/test.php - dodam że strona nie odpali się przez https trzeba po http
Go to the top of the page
+Quote Post
nospor
post 18.10.2021, 15:08:37
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Wizualnie sie zgadza.
Po czym wnioskujesz ze nie znajduje? moze daj die('checking'); w tym IFie by miec pewnosc.
Jestes pewien ze kolejnosc parametrow jest ok w strpos?
Moze jakies biale znaki, ktorych nie widac?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michuwsh
post 18.10.2021, 18:42:59
Post #7





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 1.03.2016

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


Cytat
Po czym wnioskujesz ze nie znajduje? moze daj die('checking'); w tym IFie by miec pewnosc.


Zasadniczo to nic nie daje bo warunek nie jest spełniony.

Cytat
Jestes pewien ze kolejnosc parametrow jest ok w strpos?


Napewno jest dobrze

Cytat
Moze jakies biale znaki, ktorych nie widac?


Tutaj faktycznie może być coś na rzeczy. Dopisałem funkcje która ma usunać wszystkie spacje białe znaki z kodu html i okazało się że jakiś nie zdefiniowany znak występuje po znaku "-" ale nie umiem rozszyfrować co to za znak

  1. <sectionclass="post_content"itemprop="articleBody"><divclass="vc_rowwpb_rowvc_row-fluid"><divclass="wpb_columnvc_column_containervc_col-sm-12"><divclass="vc_column-inner"><divclass="wpb_wrapper"><h2style="text-align:left"class="vc_custom_heading">Cotojestubezpieczeniezdrowotne?</h2><divclass="wpb_text_columnwpb_content_element"><divclass="wpb_wrapper"><p>Cotoipocoubezpieczeniazdrowotne?&#8211; Dobrowolneubezpieczeniezdrowotne toubezpieczenieniezależneodsystemupublicznejopiekizdrowotnej.Ubezpieczeniezawier
    anemożebyćwdowolnymtowarzystwieubezpieczeniowymoferującymtegorodzajuprodukty.Wram
    achwykupionejpolisyklientuzyskujedostępdoprywatnychplacówekmedycznychwspółpracują
    cychzdanymubezpieczycielem.Umowazazwyczajzawieranajestnarokzopcjąprzedłużenianako
    lejnyokres.Składkaopłacanajestmiesięcznie.Kosztorazzakresubezp


albo tutaj można podejrzeć http://serwer90650.lh.pl/checker/test.php
Go to the top of the page
+Quote Post
trueblue
post 18.10.2021, 18:52:06
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


E2 80 93
https://www.fileformat.info/info/unicode/char/2013/index.htm

Za dużo jest nawiasów w drugim if.

Ten post edytował trueblue 18.10.2021, 18:59:17


--------------------
Go to the top of the page
+Quote Post
michuwsh
post 19.10.2021, 08:21:24
Post #9





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 1.03.2016

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


Wykastrowałem tego stringa prawie ze wszystkiego ale ta spacja nadal tam jest

  1. <p>Cotoipocoubezpieczeniazdrowotne? Dobrowolneubezpieczeniezdrowotne toubezpieczenieniezależneodsystemupublicznejopiekizdrowotnej.Ubezpieczeniezawieranemożebyćwdowolnymtowarzystwieubezpieczeniowymoferującymtego
    rodzajuprodukty.Wramachwykupionejpolisyklientuzyskujedostępdoprywatnychplacówekmedycznychwspółpr
    acującychzdanymubezpieczycielem.Umowazazwyczajzawieranajestnarokzopcjąprzedłużenianakolejnyokres.Składkaopłacanajestmiesięcznie.Kosztorazzakresubezpieczeniazdrowotnegouzależnionyjestodrodzajuwybranegopakietu.</p>


Za pomocą:

  1. $test['html'] = str_replace("\t", '',$test['html']);
  2. $test['html'] = str_replace("\r", '',$test['html']);
  3. $test['html'] = str_replace("\n", '',$test['html']);
  4. $test['html'] = str_replace("\n\r", '',$test['html']);
  5. $test['html'] = str_replace(" ", '',$test['html']);
  6. $test['html'] = str_replace("\o", '',$test['html']);
  7. $test['html'] = str_replace(" ", '',$test['html']);
  8. $test['html'] = str_replace("–", '',$test['html']);
  9. $test['html'] = str_replace("–", '',$test['html']);
  10. $test['html'] = str_replace("–", '',$test['html']);
  11. $test['html'] = str_replace("&nbsp;", '',$test['html']);
  12.  
  13. function trim_all( $str , $what = NULL , $with = ' ' )
  14. {
  15. if( $what === NULL )
  16. {
  17. $what = "\\x00-\\x20"; //all white-spaces and control chars
  18. }
  19.  
  20. return trim( preg_replace( "/[".$what."]+/" , $with , $str ) , $what );
  21. }
  22.  
  23. $test['html'] = trim_all($test['html']);
  24.  
  25. $string = str_replace(" ", '', trim_all($string));
  26.  
  27. if (strpos($test['html'], $string) !== false) {
  28. echo 'true';
  29. }
  30.  
  31. echo $test['html'];



Nie wiem co to może być za znak.
Go to the top of the page
+Quote Post
trueblue
post 19.10.2021, 09:50:00
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Podałem Ci informacje jaki to znak.


--------------------
Go to the top of the page
+Quote Post
michuwsh
post 19.10.2021, 13:49:32
Post #11





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 1.03.2016

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


To nie ten znak jego również wywalam i nadal jest to łamanie do nowej lini

Udało się hura !

Pomocny wątek znalazł się niespodziewanie na tym forum pod adresem Temat: PHPUsuwanie wszystkiego co nie jest litera cyfra spacja

Generalnie podszedłem do tematu inaczej za pomocą wyrażenia regularnego wywaliłem z mojego html wszystko co nie jest literą. Następnie pozbyłem się spacji za pomocą str_replace te same operacje wykonałem na stringu szukanym aktualnie if zwraca true smile.gif

Ten post edytował michuwsh 19.10.2021, 13:50:47
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 13:51