tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
1431
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von supercat1510
    supercat1510 supercat1510 ist offline Mitglied Gold
    Registriert seit
    Nov 2002
    Ort
    Nähe Altötting (Bayern)
    Beiträge
    128
    Ich möchte gerne das letzte Zeichen eines Strings auslesen lassen.

    Mein Problem
    Ich überprüfe mit fsockopen ob bestimmte Links erreichbar sind, auf localhost alles kein Problem, nur online auf meinem Server zeigt er mir bei allen Adressen mit / am Ende das er sie nich erreicht.

    Jetzt bräuchte ich ne Möglichkeit dieses / am Ende (falls vorhanden) zu erkennen und zu löschen (löschen kann ich brauch nur wie mans erkennt).

    Ich kanns nicht komplett entfernen (str_replace) oder spliten (explode), da teilweise auch Seiten in Unterordnern als Link vorhanden sind - diese würden dann nicht mehr funktionieren.
     
    ^-_-^Mata ne
    Supercat1510

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    PHP-Code:
    while ($string[strlen($string)-1] === '/') {
        
    $string substr($string0, -1);
    }
    // oder
    $string rtrim($string'/'); 
     
    Markus Wulftange

  3. #3
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Hi,

    PHP-Code:
    $url "http://some.url.com/";

    if(
    $urlstrlen($url) - ] == '/' )
      
    $urlstrlen($url) - ] = '';

    echo 
    $url
    Sollte funktionieren.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  4. #4
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Wie "löscht" du denn das letzte Zeichen?
    Das wird mit Sicherheit auch der Weg sein um es zu erkennen.
    Du verwendest sicherlich substr. Dann kannst damit auch "löschen".
    Hier mal beides:
    PHP-Code:
    if (substr($str, -1) == "/")
    {
      
    $str substr($str0strlen($str) - 2);

    Edit:
    Zitat Zitat von saftmeister Beitrag anzeigen
    Sollte funktionieren.
    Ohne es zu testen, denke ich das man so nicht auf Strings schreiben kann. Das Lesen geht.
    Geändert von ZodiacXP (10.07.09 um 18:52 Uhr)
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  5. #5
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Zitat Zitat von ZodiacXP Beitrag anzeigen
    Ohne es zu testen, denke ich das man so nicht auf Strings schreiben kann. Das Lesen geht.
    Naja, ok, es kommt ein undefiniertes Zeichen anstatt des Slash. OK, meine Lösung funktioniert nicht so dolle Grundsätzlich scheint es jedoch zu funktionieren. Nehme ich statt dem Leerstring einen gültigen Buchstaben bspw. "a", funktioniert das. Seltsam nicht?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  6. #6
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Zitat Zitat von saftmeister Beitrag anzeigen
    Naja, ok, es kommt ein undefiniertes Zeichen anstatt des Slash. OK, meine Lösung funktioniert nicht so dolle Grundsätzlich scheint es jedoch zu funktionieren. Nehme ich statt dem Leerstring einen gültigen Buchstaben bspw. "a", funktioniert das. Seltsam nicht?
    Habe darüber kurz nachdenken müssen und denke den Grund gefunden zu haben:
    Es ist nachvollziehbar warum PHP das macht.

    Ein String ist ein Array von Zeichen, so wie man es aus anderen Sprachen (Java, C, C++) etc. kennt. Von daher kann man über diesen Weg lesen und schreiben.

    PHP-Code:
    $s "Dies ist ein Text.";
    $s[15] = "S";
    echo 
    $s;  // Ausgabe: Dies ist ein TeSt. 
    Ein "leeres Zeichen" macht folgendes:
    PHP-Code:
    $s "Dies ist ein Text.";
    $s[15] = "";
    // ist gleichbedeutent mit
    $s [15] = chr(0);
    // also ein vorhandenes Zeichen 
    Das kann jeder gern nachprüfen, hiermit:
    PHP-Code:
    $s "foo";
    $s[0] = "";
    $s[1] = chr(0);
    echo 
    ord($s[0]) . " = " ord($s[1]); 
    Von daher geht deine Variante. Hatte ich mich geirrt. Aber wir beide wissen jetzt, dass das Zeichen nicht gelöscht wurde sondern durch ein anderes ersetzt.
    Geändert von ZodiacXP (10.07.09 um 19:09 Uhr)
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  7. #7
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Eine leere Zeichenkette und eine Zeichenkette nur bestehend aus dem Zeichen 0x00 ist nicht dasselbe!
    PHP-Code:
    $str1 "";
    $str2 chr(0);
    var_dump($str1 === $str2); 
     
    Markus Wulftange

  8. #8
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Zitat Zitat von Gumbo Beitrag anzeigen
    Eine leere Zeichenkette und eine Zeichenkette nur bestehend aus dem Zeichen 0x00 ist nicht dasselbe!
    Richtig. Ging mehr darum was PHP in einem String daraus macht:
    PHP-Code:
    $s "abc";
    $s[1] = "";
    $s[2] = chr(0);
    var_dump($s[1] === $s[2]); // true 
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  9. #9
    Avatar von supercat1510
    supercat1510 supercat1510 ist offline Mitglied Gold
    Registriert seit
    Nov 2002
    Ort
    Nähe Altötting (Bayern)
    Beiträge
    128
    Hab jetz mal das von Saftmeister modifiziert - das von Zodiac wollte nich richtig laufen.

    Habs jetz so gelöst:
    PHP-Code:
    if($addy[strlen($addy) - 1] == '/' ) {
      
    $addy[strlen($addy) - 1] = "*";
      }
      
    $addy str_replace("*"""$addy);

      
    $addy   explode("?"str_replace("http://""",$addy));

            if(@
    fsockopen ($addy[0], 80$errno$errstr30) != FALSE){
                    echo 
    $ok;
            }
            else {
                    echo 
    $wrong;
            } 
    Ich habs über den Umweg mit * gemacht, da er mir ohne das ein Fragezeichen in ner Raute gebracht hat.

    Funktioniert jetz bei mir wie ichs wollte
     
    ^-_-^Mata ne
    Supercat1510

Ähnliche Themen

  1. Sed - letztes Vorkommen eines Strings
    Von OnePixel im Forum Linux & Unix
    Antworten: 11
    Letzter Beitrag: 26.02.10, 11:32
  2. letztes Zeichen eines Formulars
    Von ChrisDongov im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 12.04.05, 18:58
  3. PHP - Letztes Zeichen eines Dateinamens auslesen!
    Von anearlycascade im Forum PHP
    Antworten: 1
    Letzter Beitrag: 30.11.04, 17:29
  4. Erste x Zeichen eines Strings formatieren
    Von raspunicum im Forum PHP
    Antworten: 4
    Letzter Beitrag: 06.09.04, 16:50
  5. Antworten: 2
    Letzter Beitrag: 29.10.03, 13:05