Reputation: 49
//Chars to be replaced
$suchmuster = array();
$suchmuster[0] = 'á';
$suchmuster[1] = 'à';
$suchmuster[2] = 'â';
$suchmuster[3] = 'é';
$suchmuster[4] = 'è';
$suchmuster[5] = 'ê';
$suchmuster[6] = 'í';
$suchmuster[7] = 'ì';
$suchmuster[8] = 'î';
$suchmuster[9] = 'ó';
$suchmuster[10] = 'ò';
$suchmuster[11] = '/ô/';
$suchmuster[12] = 'ú';
$suchmuster[13] = 'ù';
$suchmuster[14] = 'û';
$suchmuster[15] = ' ';
$suchmuster[16] = '.';
$suchmuster[17] = ',';
$suchmuster[18] = '-';
$suchmuster[19] = '_';
//Replaces
$ersetzungen = array();
$ersetzungen[0] = 'a';
$ersetzungen[1] = 'a';
$ersetzungen[2] = 'a';
$ersetzungen[3] = 'e';
$ersetzungen[4] = 'e';
$ersetzungen[5] = 'e';
$ersetzungen[6] = 'i';
$ersetzungen[7] = 'i';
$ersetzungen[8] = 'i';
$ersetzungen[9] = 'o';
$ersetzungen[10] = 'o';
$ersetzungen[11] = 'o';
$ersetzungen[12] = 'u';
$ersetzungen[13] = 'u';
$ersetzungen[14] = 'u';
$ersetzungen[15] = '';
$ersetzungen[16] = '';
$ersetzungen[17] = '';
$ersetzungen[18] = '';
$ersetzungen[19] = '';
$newmessage = preg_replace($suchmuster, $ersetzungen, strtolower($message));
The above code was created to replace some special chars with normal ones but no matter which $nachricht (= $message) I put in, it always gives back an empty string!
Thanks for your help.
EDIT
I Changed it to:
//Chars to be replaced
$suchmuster[0] = '/ /';
$suchmuster[1] = '/./';
$suchmuster[2] = '/,/';
$suchmuster[3] = '/-/';
$suchmuster[4] = '/_/';
//Replaces
$ersetzungen[0] = '';
$ersetzungen[1] = '';
$ersetzungen[2] = '';
$ersetzungen[3] = '';
$ersetzungen[4] = '';
$newmessage = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', strtolower($message));
$newmessage = preg_replace($suchmuster, $ersetzungen, $newmessage);
It still gives back an empty string.
Upvotes: 1
Views: 389
Reputation: 20540
Regarding your updated question:
Regular expressions use special control characters. In your case it is /./
which causes your result to be empty. .
means "any character" in regex, so you are replacing each and every character with nothing.
use preg_quote()
to escape special characters in regular expressions. Example: $xy = '/' . preg_quote('.') . '/';
But you can do this much simpler without using regular expressions, like:
$replaces = array(
'.' => '',
',' => '',
// ...
);
$message = str_replace(array_keys($replaces), array_values($replaces), $message);
Upvotes: 1
Reputation: 21763
Instead of using several patterns, you can also combine the pattern to:
$nachrichtneu = preg_replace('/[,.\s_-]/', '', $nachrichtneu);
And strtolower
will not convert Á
and the like to á
. First do the iconv
conversion, then the strtolower
.
Upvotes: 1
Reputation: 350
change your code through
$suchmuster = array();
$suchmuster[0] = "/á/";
$suchmuster[1] = "/à/";
...
Upvotes: 0