Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Unbekannte Zeichen im Array [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Unbekannte Zeichen im Array


 
normbox
06-09-2007, 11:53 
 
Das Script liest eine HTML Seite mit file_get_contents aus.


$html=file_get_contents('http://'.WEB.$_POST['request_uri']);
$html=nl2br($html);
$html=str_replace("\n\r"," ",$html);
$html=str_replace("\n"," ",$html);
$html=str_replace("\t"," ",$html);
$html=strip_tags($html);
$html=html_entity_decode($html);
$html=repl_zeichen($html);

$output=explode(' ',$html);
asort($output);
foreach($output as $wort)
if ((strlen($wort)>=3) AND (!empty($wort))) {
echo '<input style="width:20px" value="'.strlen($wort).'"><input style="width:400px" value="'.trim($wort).'"><br>';
}


Jetzt habe ich die Leerzeichen entfernt aber ich erhalte weiterhin leere Felder bzw. nicht sichtbare Zeichen.

Wenn ich die Zeile auslese und mit strlen zähle erhalte ich 6 Zeichen. Ich habe schon im Inputfeld die Daten ausgegeben aber dort kann ich nur ein Leerzeichen finden. Die Ausgabe in einer Textarea ergibt ein breites Leerzeichen.

Wie kann ich herausfinden welches Zeichen das ist?

 
ThemBones
06-09-2007, 11:58 
 
was macht

repl_zeichen();

?

 
ghostgambler
06-09-2007, 12:01 
 
Die HTML-Datei ist nicht zufällig per DreamWaver oder so entstanden?
Der speichert am Anfang der Datei irgendeinen Zeichenmüll, was sehr lustig ist, weil der Firefox daran verreckt und die Website dann nur im IE vernünftig beguckbar ist...
Vielleicht sind das die Zeichen in die du gelaufen bist~

 
Gavyn
06-09-2007, 12:02 
 
oder um es mal zu verdeutlichen, bei dir steht:

$html=str_replace("\n\r","&nbsp;",$html);

 
normbox
06-09-2007, 12:03 
 
Original geschrieben von ThemBones
was macht

repl_zeichen();

?

Sucht Sonderzeichen und verwandelt diese mit str_replace in Leerzeichen.

z.B.:


function repl_zeichen($text) {
$text = str_replace('&', ' ', $text);
$text = str_replace('°', ' ', $text);
$text = str_replace('^', ' ', $text);
}

 
jahlives
06-09-2007, 12:08 
 
$html=nl2br($html);
$html=str_replace("\n\r"," ",$html);
$html=str_replace("\n"," ",$html);

Also dieser Code macht nicht wirklich viel Sinn. Wieviele \n\r als Zeilenumbrüche hast du wohl in deinem Code ? Also ich tippe drauf, dass das Zeichen ein \r ist. Kannst du aber schnell selber rausfinden indem du

for($i=0;$i<strlen($wort);$i++){
echo ord($wort[$i]).'<br />';
}

Gibt dir pro Zeile die ASCII Nummer des Zeichens zurück. Dann kannst du mittels der ASCII Tabelle festellen, um welches Zeichen es sich handelt
Und wieso machst du überhaupt Ersetzungen mit " " ? Danach explodest du am Leerzeichen...
Ausserdem ist nl2br() gefolgt von strip_tags() irgendwie auch für die Katze :rolleyes:

 
normbox
06-09-2007, 12:11 
 
Original geschrieben von Gavyn
oder um es mal zu verdeutlichen, bei dir steht:
$html=str_replace("\n\r","&nbsp;",$html);

Leider nicht aber ich habe einfach mal

$wort=str_replace("&","",$wort);

und jetzt zeigt er #160; an.

Das ist ja &amp;nbsp; aber nur als &amp;#160; geschrieben.

Danke hat mir weitergeholfen :D

 
normbox
06-09-2007, 12:27 
 
Original geschrieben von jahlives

$html=nl2br($html);
$html=str_replace("\n\r"," ",$html);
$html=str_replace("\n"," ",$html);

Also dieser Code macht nicht wirklich viel Sinn. Wieviele \n\r als Zeilenumbrüche hast du wohl in deinem Code ? Also ich tippe drauf, dass das Zeichen ein \r ist. Kannst du aber schnell selber rausfinden indem du

for($i=0;$i<strlen($wort);$i++){
echo ord($wort[$i]).'<br />';
}

Gibt dir pro Zeile die ASCII Nummer des Zeichens zurück. Dann kannst du mittels der ASCII Tabelle festellen, um welches Zeichen es sich handelt
Und wieso machst du überhaupt Ersetzungen mit " " ? Danach explodest du am Leerzeichen...
Ausserdem ist nl2br() gefolgt von strip_tags() irgendwie auch für die Katze :rolleyes:

Ja das nl2br() war eine Verzweiflungstat :rolleyes:
Wollte sehen welche Zeichen dort enthalten waren.

Das Problem konnte ich ja bereits lösen.

Vielen Dank


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:00 Uhr.