Page 1 of 1

Problem mit franz. Sonderzeichen bei str_split

Posted: 2009-03-21 18:22
by fulltilt
Bin hier an einem Punkt wo ich nicht weiterkomme (französische Zeichen) 8O
Ich erstelle gerade ein Script für FPDF wobei verschiedene Bewertungen, Name usw. aus einer DB ausgelesen werden, klappt auch soweit.
Auf dem Server sind die locales UTF-8 (FR) ... ebenfalls installiert, das ganze Script arbeitet unter UTF-8 und die DB auch.

So - jetzt muss ich für eine Tabelle die Wörter für die Noten oben vertikal stellen also:
Très bien soll dann so aussehen:
T
r
è
s

b
i
e
n

hierbei ist das Problem, das wenn ein Umbruch erfolgt oder ich die Tabelle auf eine Breite von 4 setze um einen Umbruch zu erzwingen, andert sich z.B. der Buchstabe è zum ?

habe bereits das hier versucht, bringt aber nichts:

Code: Select all

$note1 = $note["note1"];
$not1=utf8_decode($note1); 
$wort1 = implode("n",str_split($not1));
$this->MultiCell(8, 4, $wort1 , '0', 'C', 0);  
bzw.

Code: Select all

$this->MultiCell(8,4,utf8_decode($wort1),'0','C','0');  
Wenn ich das Wort "Très bien" statisch ins Script schreibe und so umbreche:
$wort1 = "Tnrnèns nn bninenn";
funktioniert es ...
gibt es eine Möglichkeit das genau so umzubrechen wenn der Wert aus der Datenbank kommt?

Re: Problem mit franz. Sonderzeichen bei str_split

Posted: 2009-03-21 23:05
by Joe User
Sieh Dir mal die UTF8-Unterstützung des phpBB3 an, IMHO sehr gut gelöst.
Auszug aus phpBB3-3.0.4/includes/utf/utf_tools.php, nicht standalone lauffähig:

Code: Select all

/**
* UTF-8 aware alternative to str_split
* Convert a string to an array
*
* @author Harry Fuecks
* @param string $str UTF-8 encoded
* @param int $split_len number to characters to split string by
* @return array characters in string reverses
*/
function utf8_str_split($str, $split_len = 1)
{
	if (!is_int($split_len) || $split_len < 1)
	{
		return false;
	}

	$len = utf8_strlen($str);
	if ($len <= $split_len)
	{
		return array($str);
	}
	
	preg_match_all('/.{' . $split_len . '}|[^x00]{1,' . $split_len . '}$/us', $str, $ar);
	return $ar[0];
}

Re: Problem mit franz. Sonderzeichen bei str_split

Posted: 2009-03-22 17:50
by fulltilt
Danke - das könnte klappen :-)
Muss ich noch ein implode voranstellen, oder kann ich die Funktion direkt aufrufen:

Code: Select all

$not1=utf8_str_split($note1); 
Joe User wrote:Sieh Dir mal die UTF8-Unterstützung des phpBB3 an, IMHO sehr gut gelöst.
Auszug aus phpBB3-3.0.4/includes/utf/utf_tools.php, nicht standalone lauffähig:

Code: Select all

/**
* UTF-8 aware alternative to str_split
* Convert a string to an array
*
* @author Harry Fuecks
* @param string $str UTF-8 encoded
* @param int $split_len number to characters to split string by
* @return array characters in string reverses
*/
function utf8_str_split($str, $split_len = 1)
{
	if (!is_int($split_len) || $split_len < 1)
	{
		return false;
	}

	$len = utf8_strlen($str);
	if ($len <= $split_len)
	{
		return array($str);
	}
	
	preg_match_all('/.{' . $split_len . '}|[^x00]{1,' . $split_len . '}$/us', $str, $ar);
	return $ar[0];
}

Re: Problem mit franz. Sonderzeichen bei str_split

Posted: 2009-03-22 17:55
by Joe User
Wie bereits geschrieben, ist diese Funktion nicht standalone lauffähig. Du benötigst schon das komplette UTF-Framework aus phpBB3 (includes/utf). Wie Du die Funktionen genau aufrufen musst, findest Du per grep auf phpBB3 schnell selbst raus ;)

Re: Problem mit franz. Sonderzeichen bei str_split

Posted: 2009-03-22 18:04
by fulltilt
alles klar - Danke
Joe User wrote:Wie bereits geschrieben, ist diese Funktion nicht standalone lauffähig. Du benötigst schon das komplette UTF-Framework aus phpBB3 (includes/utf). Wie Du die Funktionen genau aufrufen musst, findest Du per grep auf phpBB3 schnell selbst raus ;)