kostenloser Webspace werbefrei: lima-city


Entfernen von   geht nicht ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    wguide

    wguide hat kostenlosen Webspace.

    Hallo

    ich hole Daten aus XML und will diese leicht verändert ausgeben
    die XML-Daten liegen als UTF-8 vor

    im Script habe ich ganz oben auch drin
    :
    header("Content-Type: text/html; charset=utf-8");


    ich lese die Daten mit simplexml_load_file()
    und gebe dann die Titel in einer foreach() aus

    in den Daten ist das Element 'name' der String den ich haben will
    da komme ich auch ran, aber im String sind auch
     

    .. aber diese
     
    bekomme ich nicht weg ?!?

    $data = simplexml_load_file($myfile); 
    
    foreach($data->result as $item) { 
       $title = (string)$item->name;    // -- z.B.: $title = '  Infotext Titel  '; 
       $title = str_replace(' ','',$title);
       echo "<br />".$title."\n";       // -- immernoch: $title = '&nbsp;&nbsp;Infotext Titel&nbsp;&nbsp;'; 
    }


    also ich kann die &nbsp; nicht entfernen mit str_replace()
    es bleibt
    &nbsp;&nbsp;Infotext Titel&nbsp;&nbsp;

    ???

    auch wenn ich das (HTML) geschütze Leerzeichen mit utf8_encode() anwende
    $raus = utf8_encode('&nbsp;'); 
    $title = str_replace($raus,'',$title);

    auch dann bleibt es drin ... ist ja eigentlich aus Quatsch ... oder?
    ... oder wie sieht ein (HTML) geschützes Leerzeichen: &nbsp; sonst in UTF-8 aus ?
    oder liegt es an simplexml_load_file() ?



    Beitrag zuletzt geändert: 10.9.2012 12:31:46 von wguide
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Wenn du einen Link zu der XML-Datei postest lässt sich das ansehen und dir helfen, sonst eher nicht...
  4. m******e

    wguide schrieb:
    $title = str_replace('&nbsp;','',$title);


    also ich kann die &nbsp; nicht entfernen mit str_replace()
    es bleibt
    &nbsp;&nbsp;Infotext Titel&nbsp;&nbsp;

    ???
    Doch, das geht, hatte es mit Twitterdingens XML auch schon mal.

    Das "&" ist ein Sonderzeichen, und muss dementsprechend mit dem Backslash als solches deklariert werden.
    Habs grad nicht mehr genau im Kopf, glaube es ging so:
    Aus
    $title = str_replace('&nbsp;','',$title);
    wird
    $title = str_replace('\&amp;'.'nbsp;', ' ', $title);
    oder ähnlich.

    Beitrag zuletzt geändert: 10.9.2012 14:33:51 von menschle
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    menschle schrieb:
    Das "&" ist ein Sonderzeichen, und muss dementsprechend mit dem Backslash als solches deklariert werden.
    Seit wann denn das? Wenn es wirklich escaped werden müsste würde das doch sicher in der PHP-Dokumentation zu Strings stehen... tut es aber nicht ;-)

    Welche Bedeutung sollte das
    &
    denn haben? :-P

    Ohne der XML-Datei lässt sich das leider nicht nachvollziehen, denn in lokalen Tests konnte ich mit der str_replace-Zeile vom TE die
    &nbsp;
    entfernen...
  6. m******e

    hackyourlife schrieb:
    Ohne der XML-Datei lässt sich das leider nicht nachvollziehen, denn in lokalen Tests konnte ich mit der str_replace-Zeile vom TE die
    &nbsp;
    entfernen...
    Da, zum testen ;)

    Wie gesagt, bin mir nicht mehr sicher, kann auch
    $title = str_replace('&amp;nbsp;', ' ', $title);
    oder
    $title = str_replace('\&amp;nbsp;', ' ', $title);
    gewesen sein.

  7. Autor dieses Themas

    wguide

    wguide hat kostenlosen Webspace.

    also jetzt habe ich mir die XML Source nochmal angesehen

    und dort steht an der Stelle, wo ich bei Ausgabe ein &nbsp; bekomme
    dafür 2 Zeichen in UTF-8:
    0xC2
    und
    0xA0
    was in ISO-8859-1 so ausseiht
    "Â  "

    .. ohne die Anführungszeichen ... (also dieses Sonderzeichen plus Leerzeichen)

    <result>
      <id>25</id>
      <name>  Infotext Titel  </name>
      <info>... bla bla ...</info>
    </result>


    aber die Ausgabe von
    $title = (string)$item->name;
    in der foreach()
    ergibt dann:
    &nbsp;&nbsp;Infotext Titel&nbsp;&nbsp;
    mit
    echo $title;


    wenn ich jetzt dieses "Â " im str_replace verwende, dann verschwindet das &nbsp; bei der Ausgabe

    $title = trim(str_replace(' ','',$title));

    echo $title; // ---- ergibt: "Infotext Titel" .... wie gewünscht ohne &nbsp;

    aber schon komisch ... die Daten sind UTF-8, die Seite hat UTF-8 header
    und trotzdem kann ich (muss ich) die ISO-Zeichen im str_replace verwenden ?

    warum ist &nbsp; in der XML (als UTF-8) so komisch codiert ???

  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    wguide schrieb:
    aber schon komisch ... die Daten sind UTF-8, die Seite hat UTF-8 header
    und trotzdem kann ich (muss ich) die ISO-Zeichen im str_replace verwenden ?
    Du müsstest wohl deinem Editor auch sagen, dass er die Seite in UTF-8 darstellen soll, dann würde er dort nur ein Zeichen darstellen...

    Interessanter ist aber, warum das bei
    echo($title);
    zu
    &nbsp;
    wird... aber nachdem das Problem ja gelöst ist sollte das auch nicht weiter stören.
  9. 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!