Fröhlich: function problem bei der Übergabe

Hallo,

ich experimentiere gerade mit bit.ly einem URL kürzer. Soweit so gut ich habe mir eine kleine Funktion gebastelt, aber leider habe ich ein Problem mit der Übergabe

make_bitly_url('http://heise.de','heise','R_96acc320c5c423e4f5192e006ff24980','json');

funktioniert einwandfrei (hier nur demodaten). Wenn ich aber

make_bitly_url('$datensatz->url','heise','R_96acc320c5c423e4f5192e006ff24980','json');

übertrage gibt es keine kurz URL. Der $datensatz->url ist allerdings gefüllt.

Offenbar bin ich blind und sehe den Fehler nicht! Danke

  1. make_bitly_url('http://heise.de','heise','R_96acc320c5c423e4f5192e006ff24980','json');

    funktioniert einwandfrei (hier nur demodaten). Wenn ich aber

    Dafür gäbe es gem. RFC 2606 eigene Beispieldomains.

    übertrage gibt es keine kurz URL. Der $datensatz->url ist allerdings gefüllt.

    Mit was?

    ich [...] sehe den Fehler nicht!

    Ich auch nicht.

    1. übertrage gibt es keine kurz URL. Der $datensatz->url ist allerdings gefüllt.

      Mit was?

      Der ECHO Befehl gibt:
      http://heise.de
      aus.

      1. fein :)

        Dennoch lässt sich aufgrund deiner Fehlerbeschreibung nicht riechen, was make_bitly_url() genau tut bzw. wie deine Klasse allgemein aussieht.

        1. fein :)

          Ja ich bin ein ganz fleisiger :-)

          // Funktion zur generierung einer kurzURL  
          function make_bitly_url($url,$login,$appkey,$format = 'xml',$version = '2.0.1')  
          {  
          	//create the URL  
          	$bitly = 'http://api.bit.ly/shorten?version='.$version.'&longUrl='.urlencode($url).'&login='.$login.'&apiKey='.$appkey.'&format='.$format;  
          	  
          	//get the url  
          	//could also use cURL here  
          	$response = file_get_contents($bitly);  
          	  
          	//parse depending on desired format  
          	if(strtolower($format) == 'json')  
          	{  
          		$json = @json_decode($response,true);  
          		return $json['results'][$url]['shortUrl'];  
          	}  
          	else //xml  
          	{  
          		$xml = simplexml_load_string($response);  
          		return 'http://bit.ly/'.$xml->results->nodeKeyVal->hash;  
          	}  
          }
          
  2. make_bitly_url('$datensatz->url','heise','R_96acc320c5c423e4f5192e006ff24980','json');

    ja - das würde mich auch wundern, wenn das klappt.

    Mach aus '$datensatz->url' besser $datensatz->url

    1. Mach aus '$datensatz->url' besser $datensatz->url

      Hallo Erik,

      leider scheint dann ein Problem mit der Simple XML Anwendung zu geben (siehe Quelltext des Scripts unter: http://forum.de.selfhtml.org/?t=195780&m=1310778 )

      Fehlermeldung: Warning: Illegal offset type in ...

      1. Hi!

        Mach aus '$datensatz->url' besser $datensatz->url
        leider scheint dann ein Problem mit der Simple XML Anwendung zu geben (siehe Quelltext des Scripts unter: http://forum.de.selfhtml.org/?t=195780&m=1310778 )
        Fehlermeldung: Warning: Illegal offset type in ...

        Das ist nicht "dann" ein Problem sondern das ist dein eigentliches Problem. Mit '$datensatz->url' hast du einfach nur einen Text und keine Variable. Der Text bereitet keine Probleme, ist aber sinnlos für das was du willst. Du willst ja schon den Inhalt von $datensatz->url haben, und wenn du den nicht bekommst, machst du da irgendeinen Fehler. Vielleicht ist ja das ->url beim Inhalt von $datensatz nicht richtig. Kontrollausgaben mit var_dump()/print_r() können helfen.

        Lo!

  3. Hi!

    make_bitly_url('$datensatz->url','heise','R_96acc320c5c423e4f5192e006ff24980','json');

    Du bist nun schon der nächste innerhalb kürzester Zeit, der den Unterschied zwischen " und ' als PHP-Stringbegrenzer missachtet.

    Übrigens: http://heise.de/-903953

    Lo!

    1. Du bist nun schon der nächste innerhalb kürzester Zeit, der den Unterschied zwischen " und ' als PHP-Stringbegrenzer missachtet.

      Und zu meiner Schande muss ich gesehen, dass ich das einfach übersehen habe :D

      1. Hi!

        Du bist nun schon der nächste innerhalb kürzester Zeit, der den Unterschied zwischen " und ' als PHP-Stringbegrenzer missachtet.
        Und zu meiner Schande muss ich gesehen, dass ich das einfach übersehen habe :D

        Kannste mal sehen. Ich übersah, dass hier auch eine Einfassung in " komplett überflüssig ist.

        Lo!

        1. Ich verstehe jetzt leider nur Bahnhof.

          Hi!

          Du bist nun schon der nächste innerhalb kürzester Zeit, der den Unterschied zwischen " und ' als PHP-Stringbegrenzer missachtet.
          Und zu meiner Schande muss ich gesehen, dass ich das einfach übersehen habe :D

          Kannste mal sehen. Ich übersah, dass hier auch eine Einfassung in " komplett überflüssig ist.

          Lo!

          1. Hi!

            Ich verstehe jetzt leider nur Bahnhof.

            Also: Variablen werden nur in "" ausgewertet. Was in '' steht ist immer einfacher Text, auch wenn da Variablennamen drinstehen, so besteht eben der Text aus dem Variablennamen. Weiterhin ist das Einrahmen von einfachen Variablen ohne weiteren Text in "" sinnlos.

            $foo = "$bar";

            ist im Ergebnis genau das gleiche wie

            $foo = $bar;

            nur dass der Parser ein wenig weniger Arbeit hat. (Nun kann man argumentieren, dass bei "$bar" der Inhalt von $bar in einen String konvertiert wird, falls er das noch nicht ist, aber da nimmt man lieber einen expliziten Typecast ($foo = (string)$bar;), um diese Absicht deutlich von der vielfach unnötigen "$bar"-Schreibweise abzuheben.)

            In deinem Fall waren erst einmal die ''-Anführungszeichen um das $datensatz->url verkehrt, und der nun zu sehende Fehler ist ein anderer Fehler. Um dessen Ursache zu finden, muss man wissen, was in $datensatz konkret steht.

            Lo!

  4. Mahlzeit Fröhlich,

    make_bitly_url('$datensatz->url','heise','R_96acc320c5c423e4f5192e006ff24980','json');

    übertrage gibt es keine kurz URL. Der $datensatz->url ist allerdings gefüllt.

    Du meinst "Das Objekt, das sich in der Variablen $datensatz befindet, besitzt eine Eigenschaft namens 'url', die einen Wert enthält".

    Offenbar bin ich blind und sehe den Fehler nicht! Danke

    1. werden Variablen, die sich in Strings befinden, die von ' begrenzt werden, nicht geparst und

    2. ist es absolut *unnötig*, simple Variablen ständig in irgendwelche Strings stecken zu müssen.[1]

    MfG,
    EKKi

    [1] Wer zum Geier hat eigentlich diese Unart aufgebracht? Der gehört an den Sackhaaren aufgehängt ... so viele Probleme, die aus derartigen Konstruktionen erwachsen, weil Anfänger sich nicht die Bohne um das Verständnis von Grundlagen kümmern - so viele abgestorbene Nerven von "alten Hasen", die ständig und immer wieder auf diese Probleme hinweisen.

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|