kostenloser Webspace werbefrei: lima-city


str_replace ersetzt nichts

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    lan-im-netz

    lan-im-netz hat kostenlosen Webspace.

    Hallo zusammen.

    folgende Funktion:
    function escapeToFile($word)
    {
    	$word = strtolower($word);
    	$word = str_replace('ä','ae',$word);
    	$word = str_replace('ö','oe',$word);
    	$word = str_replace('ü','ue',$word);
    	$word = str_replace(' ','-',$word);
    	$word = str_replace('ß','ss',$word);
    	$word = preg_replace('/\\W/', '', $word);
    	return $word;
    }

    wird von mir baharrlich seit mehren Minuten und aufwändiger Googlesuche und verschiedensten Strings mit noch verschiedeneren Sonderzeichen und Umlauten gefüttert, gibt aber emotionslos immer exakt den String aus, der eingegeben wurde. Vom Skript her scheint ja alles in Ordnung zu sein. Kann der Fehler in irgendeiner php.Einstellung liegen? Manchmal wird zwar hier und da ein normaler Buchstabe durch strtolower klein (aber auch keine grpßen Umlaute), preg_replace macht aber dann meist noch mehr kaputt und kürzt wild um sich. Ideen?

    gruß
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wie bekommt das Script denn seine Daten? Wenn sie aus einer Textdatei kommen, dann könnte es an der Kodierung liegen.
  4. Autor dieses Themas

    lan-im-netz

    lan-im-netz hat kostenlosen Webspace.

    Kodierung war das Stichwort. Umlaute und ähnliches sind mit str_replace mist. Falls jemand vor dem selben Problem steht:

    function escapeToFile($word)
    	{
    		$uml = utf8_decode('ä').utf8_decode('ö').utf8_decode('ü').utf8_decode('Ä').utf8_decode('Ö').utf8_decode('Ü');
    		$word = preg_replace('([^!a-zA-Z'.$uml.'0-9-_ ])', '', $word);
    		$word = strtolower($word);
    		$word = str_replace(utf8_decode('ä'),'ae',$word);
    		$word = str_replace(utf8_decode('ö'),'oe',$word);
    		$word = str_replace(utf8_decode('ü'),'ue',$word);
    		$word = str_replace(utf8_decode('Ä'),'ae',$word);
    		$word = str_replace(utf8_decode('Ö'),'oe',$word);
    		$word = str_replace(utf8_decode('Ü'),'ue',$word);
    		$word = str_replace(' ','-',$word);
    		$word = str_replace(utf8_decode('ß'),'ss',$word);
    		return $word;
    	}
  5. lan-im-netz schrieb:
    ... Umlaute und ähnliches sind mit str_replace mist...
    aaah yo! was ist eigentlich 'ähnliches'???? no gut ... wurst!
    hier kannst du die ausgabe vom deinen code und vom meinen bewundern (oberste zeile ist von dir [dauert satte 3.??x so lang und ergebnis NIX], unterste ist von mir ;).

    ja und: das hier ist eine gemeinde, wo man es versucht, einander zu helfen. kann man das nicht, sollte man auf die verbreitung von bockmist (freiwillig) verzichten. (wenn auch es nicht ganz 5 gulden bringt ;) dein problem ist nicht (nur) die kodierung!!

    für dich - ganz langsam - zum mitschreiben beide funktionen (mit zeitmessung):
    <?php
    
    error_reporting(E_ALL | E_STRICT);
    
    $word = 'aeiou-äöü-AEIOU-ÄÖÜß-ss';
    
    $r = null;
    $s = microtime(true);
    for($i = 0; $i <100000;$i++) {
      $r .= escapeToFile($word);
    }
    $s = microtime(true) - $s;
    $e = microtime(true);
    for($i = 0; $i <100000;$i++) {
      $r .= _escapeToFile($word);
    }
    $e = microtime(true) - $e;
    
    
    echo "<pre><strong> escapeToFile('</strong>$word<strong>'):</strong> ".escapeToFile($word)." - (dauer: $s sec.)";
    exit("<hr /><strong>_escapeToFile('</strong>$word<strong>'):</strong> "._escapeToFile($word)." - (dauer: $e sec.)");
    
    /* ---- deine function ---- */
    function escapeToFile($word)
    	{
    		$uml = utf8_decode('ä').utf8_decode('ö').utf8_decode('ü').utf8_decode('Ä').utf8_decode('Ö').utf8_decode('Ü');
    		$word = preg_replace('([^!a-zA-Z'.$uml.'0-9-_ ])', '', $word);
    		$word = strtolower($word);
    		$word = str_replace(utf8_decode('ä'),'ae',$word);
    		$word = str_replace(utf8_decode('ö'),'oe',$word);
    		$word = str_replace(utf8_decode('ü'),'ue',$word);
    		$word = str_replace(utf8_decode('Ä'),'ae',$word);
    		$word = str_replace(utf8_decode('Ö'),'oe',$word);
    		$word = str_replace(utf8_decode('Ü'),'ue',$word);
    		$word = str_replace(' ','-',$word);
    		$word = str_replace(utf8_decode('ß'),'ss',$word);
    		return $word;
    	}
    
    /* ---- meine bescheidene ---- */
    function _escapeToFile($word) {
      return str_replace(
        array('ä', 'ö', 'ü', 'ß', 'Ä', 'Ö', 'Ü'),
        array('ae', 'oe', 'ue', 'ss', 'Ae', 'Oe', 'Ue'),
        $word
      );
    }
  6. <?php
    $word = 'Heizölrückstoßabdämpfung';
    $word = utf8_decode(preg_replace('#[^\pL]#u', '', $word));
    
    $search = array(
        'ä',
        'ö',
        'ü',
        'ß',
        'Ä',
        'Ö',
        'Ü'
    );
    
    $replace = array(
        'ae',
        'oe',
        'ue',
        'ss',
        'Ae',
        'Oe',
        'Ue'
    );
    
    echo str_replace($search, $replace, $word);


    Beitrag zuletzt geändert: 11.5.2013 3:01:24 von fabo
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!