Pereiti prie turinio

URL perdavimas iš textarea į funkciją


Rekomenduojami pranešimai

Taigi iš textarea reikia gauti įrašytus URL ir perduoti į funkciją, tai atrodo išeina padaryti, bet perdavus funkcija veikia tik su paskutiniuoju array nariu. Atvaizdavus visą URL'ų array viskas atrodo gražu. Nesuprantu kame bėda. Čia pavyzdys mano testavimo, kurį paleidus, funkcija kuriai reikia URL veikia tik su paskutiniuoju array nariu, nors kaip sakiau atvaizdavus patį pirmą atrodo, kad jis nieko nesiskiria nuo paskutiniojo. Gal patarsit ką?

 

$total= trim($_POST["area"]);
$keyarr=explode("\n",$total);


$keyarr[0] = str_replace("\n",'',$keyarr[0]);
$keyarr[10] = str_replace("\n",'',$keyarr[10]); 
echo $keyarr[0];
echo $keyarr[10];


echo Funkcija($keyarr[0]); // funkcija neveikia
echo Funkcija($keyarr[10]);// funkcija veikia

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taigi iš textarea reikia gauti įrašytus URL ir perduoti į funkciją, tai atrodo išeina padaryti, bet perdavus funkcija veikia tik su paskutiniuoju array nariu. Atvaizdavus visą URL'ų array viskas atrodo gražu. Nesuprantu kame bėda. Čia pavyzdys mano testavimo, kurį paleidus, funkcija kuriai reikia URL veikia tik su paskutiniuoju array nariu, nors kaip sakiau atvaizdavus patį pirmą atrodo, kad jis nieko nesiskiria nuo paskutiniojo. Gal patarsit ką?

 

$total= trim($_POST["area"]);
$keyarr=explode("\n",$total);


$keyarr[0] = str_replace("\n",'',$keyarr[0]);
$keyarr[10] = str_replace("\n",'',$keyarr[10]); 
echo $keyarr[0];
echo $keyarr[10];


echo Funkcija($keyarr[0]); // funkcija neveikia
echo Funkcija($keyarr[10]);// funkcija veikia

 

 

Kam tas str_replace ? Ka ta funkcija atlieka ?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip funkcija neveikia? Error'as, ar tiesiog neveikia taip, kaip turėtų? Bet kokiu atveju, pasiimk normalų debuggerį ir pirmyn :)

 

perduodant visus išskyrus paskutinį URL į CURL funkciją tinklapio atsiuntimui gaunu:

 

400 Bad request

Your browser sent an invalid request.

 

EDIT:

 

To ecash:

'\n' panaikina elemente jei randa, bet tai nedavė teigiamų rezultatų.

Redagavo Nerka
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Visame šitame kode aš nematau jokios logikos :(

 

Tai kad čia labai paprastas skriptas, o jo logika gauti textarea lauką, isskaldyti eilutemis ir perduoti i funkciją.

 

Šiame skripte tiesiog perduodu pirmą ir paskutinę. Buvau ciklą pasirases, bet užtenka ir tiek matyti ar veikia ar ne.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai kad čia labai paprastas skriptas, o jo logika gauti textarea lauką, isskaldyti eilutemis ir perduoti i funkciją.

 

Šiame skripte tiesiog perduodu pirmą ir paskutinę. Buvau ciklą pasirases, bet užtenka ir tiek matyti ar veikia ar ne.

 

Em. Tu išskaidai tekstą eilutėmis su su explode().

Ir po to pirmai eilutei naudoji str_replace(), kur keiti naują eilutę (nors tai yra ir taip jau viena eilutė) tarpu? Kažkaip neskamba man logiškai :( Neatrodo, kad str_replace() apskritai kažką padaro. Arba aš visai kažko nesuprantu.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Em. Tu išskaidai tekstą eilutėmis su su explode().

Ir po to pirmai eilutei naudoji str_replace(), kur keiti naują eilutę (nors tai yra ir taip jau viena eilutė) tarpu? Kažkaip neskamba man logiškai :( Neatrodo, kad str_replace() apskritai kažką padaro. Arba aš visai kažko nesuprantu.

 

Na ne programuotojas aš, tiksliai nežinojau kaip explode veikia, tiesiog ieškojau problemų tai ir idėjau str_replace, bet esmė tame, kad neaišku kodėl neveikia.......

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Man nelabai aišku vis tiek, ką tu bandai padaryti čia.

Galėtum konkrečiau pamėginti paaiškinti ir parodyti visą kodą, kuris yra naudojamas. Šiuo atveju, nesimato, kas ten per funkcija Funkcija() naudojama.

 

tarkim, kad naudojamas atsisiųsti visus tinklapius kuriuos surašai į textbox su cURL pagalba. Ta Funkcija() tiesiog eilinė cURL atsisiuntimo funkcija. Viskas nebeveikia atsisiuntimo stadijoje ($htmlc = get_data($link);). Bet šita dalis skripto manau neturi prasmės, nes su paskutiniu array nariu veikia. tai manyčiau kad joje viskas gerai.

 

function get_data($url)
{

 $ch = curl_init();
 $browsers = array("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20060918 Firefox/2.0", "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)");
 $choice2 = array_rand($browsers);
 $browser = $browsers[$choice2];
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_USERAGENT, $browser);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_TIMEOUT, 40);
 curl_setopt($ch, CURLOPT_MAXREDIRS, 7);

 $data = curl_exec($ch);
 curl_close($ch);
 return $data;

}

function Funkcija($link) { 
$htmlc = get_data($link);
$html = str_get_html($htmlc);
echo $html;
foreach($html->find('div[class="field tText fURL"]') as $e)  {
	foreach($e->find('input') as $e2)  {
	}
}
$html->clear();
return $e2->value;
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O kam tu naudoji tą Funkcija()?

Su get_data() funkcija tu gauni visą puslapio source. Ką tu dar čia bandai su tuo Funkcija() atlikti ar bent žinai?

 

Na naudoju kaiką gauti iš tų puslapių atsisiustų, bet nukrypom labai offtopic. Toje dalyje viskas veikia, testavau po viena url viskas ok.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš manyčiau, kad "kai kam" išgauti iš puslapių, reiktų naudoti regex'ą.

 

Na man taip paprasčiau, bet esmė tame, na kūriau šia temą dėl kad sužinočiau kaip perduoti man tą listą URL'ų kuriuos reikia atsisiųsti. :)

 

str_get_html - simple html dom biblioteka, čia dar nevisas skriptas idėtas :D

Redagavo Nerka
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ah. Okay. Nesigilinu tada toliau ;)

 

Em, tai atskiri visus link'us su explode().

Tada turi $keyarr[] (masyvas). Susirandi, koks yra masyvo ilgis (count() ar sizeof()), ar kokią nori kitą funkciją naudoji ir tada prasuki ciklą su visomis reikšmėmis iki tos) arba naudoji "foreach" ir taip prasuki visas reikšmes. Ir su visomis reikšmėmis atlieki tą norimą funkciją.

Redagavo Satisfaction
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ah. Okay. Nesigilinu tada toliau ;)

 

Em, tai atskiri visus link'us su explode().

Tada turi $keyarr[] (masyvas). Susirandi, koks yra masyvo ilgis (count() ar sizeof()), ar kokią nori kitą funkciją naudoji ir tada prasuki ciklą su visomis reikšmėmis iki tos) arba naudoji "foreach" ir taip prasuki visas reikšmes. Ir su visomis reikšmėmis atlieki tą norimą funkciją.

 

dar kartą sakau kas negerai, ne cikle problemos, o tai kad tai, kad cURL gražįna 400 erorą, kai skaito url masyvą, o pagal paskutinį masyvo url veikia. Reiks galvosi kažką visai kitaip nes nebeturiu jegų šitam būdui.

Nuoroda į pranešimą
Dalintis kituose puslapiuose


function hexdump($string) {
   $ret = '';
   for ($i = 0; $i < strlen($string); $i++) {
       $char = $string[$i];
       $num = ord($char);
       if ($num > 31 && $num < 127) {
           $ret .= $char;
       }
       else { $ret .= bin2hex($char); }
       $ret .= ' ';
   }

   return $ret;
}

 

Suimprovizavau tokią funkcijėlę, padaryk

print hexdump($string);

ir matysi, ar yra kokių nespausdinamų simbolių įsimaišiusių (juos turėtų parašyti 2 simbolių hex kodu, o paprastus - vienu paprastu simboliu (tarp simbolių - tarpai)).

 

 

4.5.1 "400 Bad Request"

The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.

 

Nu atleisk, bet taip ne į temą pezi... Jis ir pats supranta, kad kažkas negerai jo argumentuose gaunasi ir būtent dėl to gauna 400, net serveris jam atsakė su paaiškinimu. Vargu, ar tavo copypasta čia kuo padeda :)

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu atleisk, bet taip ne į temą pezi... Jis ir pats supranta, kad kažkas negerai jo argumentuose gaunasi ir būtent dėl to gauna 400, net serveris jam atsakė su paaiškinimu. Vargu, ar tavo copypasta čia kuo padeda :)

 

Tai kad čia labai į temą :)

Problema yra jo kreipimęsi. Jis ir turėtų tos problemos ieškoti. Mėginti išspausdinti masyvą su var_dump arba print_r ir pasižiūrėti, gal dėl kažkokių priežasčių ne taip explodino.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai kad čia labai į temą :)

Problema yra jo kreipimęsi. Jis ir turėtų tos problemos ieškoti. Mėginti išspausdinti masyvą su var_dump arba print_r ir pasižiūrėti, gal dėl kažkokių priežasčių ne taip explodino.

Na, bet jis tą patį error'ą gavo, ir paaiškinimą panašų... Ne error'e klaidos reik ieškoti :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Mh, nemačiau jo žinutės, kad bandė.

Tada reikia žiūrėti, gal kas blogai su cURL nors pažiūrėjus, nieko nesimato. Jei host'as neblokuoja, gali vietoj cURL pamėginti naudoti file_get_contents($url). Nieko ypatingo su cURL nedarai, tad skirtumo nepajustum.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taigi, bandžiau su silkės hex funkcija ieškoti, gale būdavo '0d' simbolis, jį lyg ir nuėmiau, bet vistiek neveikė.

 

Tada mečiau tą cURL lauk, $html=file_get_html($link); ir viskas veikia. Ačiū už pagalbą.

 

Dar dabar išlieka mistika man kas čia buvo, bet tai nebesinori kankintis.

 

Edit: Visgi problema pasirodo buvo 0x0D :), kažkaip vakar vakare kažką praleidau. Dėkui silke už hexdump.

Redagavo Nerka
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taigi, bandžiau su silkės hex funkcija ieškoti, gale būdavo '0d' simbolis, jį lyg ir nuėmiau, bet vistiek neveikė.

 

Tada mečiau tą cURL lauk, $html=file_get_html($link); ir viskas veikia. Ačiū už pagalbą.

 

Dar dabar išlieka mistika man kas čia buvo, bet tai nebesinori kankintis.

0d yra \r simbolis, tai textarea eilutės skiriamos "\r\n" (windows eilučių pabaiga) o ne tiesiog "\n" (unix pabaiga). Tai tiesiog arba turėjai sprogdinti per "\r\n", o ne tiesiog "\n", arba paskui praleisti per str_replace ir "\r" išmesti (trim, kiek žiūrėjau, šito lyg ir nenukerpa...) :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...