• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

VOKALE umkehren funktion funktioniert nur bei string

silent321

New member
Hallo,

ich habe eine kleine funktion für mich gebaut damit ich einen string in einer URL umwandeln kann und zurück:

Code:
	function VOKALE($wert, $r)
			{
			$a = array(	'ae', 'ue', 'oe', 'Ae', 'Ue', 'Oe', '-' );
			$b = array(	'ä','ü','ö', 'Ä', 'Ü', 'Ö',	' '	    );
			return ($r == 1 ? str_replace($b, $a, $wert) : str_replace($a, $b, $wert));
			}

VOKALE( 'www.Übel täter.de', 1) //soll ergeben: www.Uebel-taeter.de
VOKALE( 'www.Uebel-taeter.de', 0) //soll ergeben: www.Übel täter.de



Nun benutze ich im gesamten Script:

Code:
header("Content-type: text/html; charset=iso-8859-1");

wenn ich diese funktion mit einem einfach 'ÄÜÖ' String ausgebe auch einwandfrei.

Im Script verwende ich ein erstelltes Array

Lasse ich mir meinen Arraywert ausgeben welcher zb: ÄÖÜ beinhaltetso wird im Browser nun auch ÄÖÜ korrekt ausgegeben. Jage ich diesen Arraywert nun durch meine VOKALE Funktion mit

VOKALE( $array[1]['text'], 1)

wendet er die funktion nicht an! gebe ich jedoch den inhalt als string ein:


VOKALE('ÄÖÜ', 1)

So funktioniert es einwandfrei.

Das muss an der Zeichenkodierung liegen, ich verwende jedoch in diesem Script an keiner Stelle UTF8_encode oder ähnliches lediglich
die header ausgabe charset=iso-8859-1


Wisst ihr woran es liegen könnte?

Viele Grüße
 
Da ich Programmieren nie richtig gelernt habe kenne ich nur zwei typen von variablen, einen string, also text und bustaben zwischen hochkomma "Der String" oder eine Zahl.


In diesem fall:

Print_r = Array ( [text] => Übung )


In dem Arraywert befindet sich also der Text "Übung".

Hier wird der Arraywert bestimmt:

$array[] = array('text' => $item);

und $item resultiert aus einer Schleife:

foreach($read as $item)


Hoffe das ist die Antwort auf deine Frage.

LG
 
Das beantwortet Sie, und bring mich zur nächsten Frage: Was genau steht in $item drin?
 
Um ehrlich zu sein steht in dem arraywert "Übung.txt"

Oh wenn ich nun $item ausgebe erhalte ich "�bung.txt", also mit einem Fragezeichen Statt umlaut.. Du bist wirklich auf dem richtigen weg.

Also $item resultiert aus dem array $read (foreach($read as $item), und das resultiert aus folgendem:

PHP:
$read =  glob($dir.'*',GLOB_MARK | GLOB_NOSORT);

Mit glob() lasse ich einen Ordner nach dateienamen scannen

Hier muss der Fehelr irgendwie sein. Aber wie kann ich das beheben bzw wie kommts?
 
Versuch das ganze mal mit
PHP:
utf8_decode(glob($dir.'*',GLOB_MARK | GLOB_NOSORT));
bzw. utf8_encode.
 
Das klappt leider beides nicht:

Notice: Array to string conversion in C:\xampp\htdocs\Idee\index.php on line 64

Das ist die zeile mit $result = glob...

im Prinzip gibt glob() direkt ein array aus.
 
Dann versuch das mal im Aufruf unterzubringen:
Code:
VOKALE(utf8_decode($array[1]['text']), 1)

Sorry stocher gerade auch nur, bin zu KO um klar denken zu können. Werde jetzt auch FA machen ;-)
 
mit utf8_encode klappts. aber komisch dass ich den string utf8 codieren muss damit er in meiner funktion funktioniert.

Aber vielen Dank für die Hilfe
 
Zurück
Oben