preg_replace - niezrozumiałe zachowanie

0

Ktoś to rozumie?

Kod:

<!DOCTYPE html>
<html><head>
<meta charset="UTF-8">
</head><body>
<?php
$str = "
// polskie litery: ĄĘ Ą Ę ą ę ąę ąęśćńźżół ĄĘŚĆŃŹŻÓŁ
// różne litery: öëü ÖËÜ čž ČŽ 
";

$str1 = preg_replace('/[^0-9A-Za-z ¦\[\]\/\(\)?;:,._+-]/', '•', $str);
$str2 = preg_replace('/[^0-9A-Za-zĄĘÓŁŚĆŃŹŻąęółśćńźż ¦\[\]\/\(\)?;:,._+-]/', '•', $str);


echo("$str1<br><br>");
echo("$str2<br><br>");
?>

</body></html>

Wynik działania:

••// polskie litery: •••• •• •• •• •• •••• •••••••••••••••••• ••••••••••••••••••••// r••••ne litery: •••••• •••••• •••• •••• ••

••// polskie litery: ĄĘ Ą Ę ą ę ąę ąęśćńźżół ĄĘŚĆŃŹŻÓŁ••// różne litery: �•�•ü �•�•�• �•�• �•�• ••
0

Dobra, już wiem, trzeba użyć przełącznika /u, który pozwala używać unikodu we wzorcu. Czyli ma być tak:

$str2 = preg_replace('/[^0-9A-Za-zĄĘÓŁŚĆŃŹŻąęółśćńźż ¦\[\]\/\(\)?;:,._+-]/u', '•', $str);

Zostawiam, bo może komuś się kiedyś przyda.

1 użytkowników online, w tym zalogowanych: 0, gości: 1