I checked already the many articles here about single quote handling in PHP, but I don't find the right answer which solves my issue: So here we go:
I have the following function to replace shortcuts to smileys (shortened version), This was working on my old version and old servers (Apache, MySQL), but on the new servers (nginx, Laravel, PHP, MySQL) it replaces all smiley shortcuts but the :'(
public static function addSmileys($text){
return str_replace(
array(
":-)",
":'("
),
array(
"<a title=':-)'><i class='smiley smile'></i></a>",
"<a title=\":'(\"><i class='smiley crying'></i></a>"
),
$text);
}
I have old migrated data from the old system and it won't help if I only modify new input. There might be something with the Character set, but I really don't know
I tried to use ":\'("
which didnt work. ':\'('
works fine. And here is the correct function now:
public static function addSmileys($text){
return str_replace(
array(
":-)",
':\'(', // added slash and single quotes, slash double quotes not working
':'(' // due to previous move, some crying smileys looked like this
),
array(
"<a title=':-)'><i class='smiley smile'></i></a>",
"<a title=\":'(\"><i class='smiley crying'></i></a>",
"<a title=\":'(\"><i class='smiley crying'></i></a>"
),
$text);
}
Thanks @CD001 You were right, I just wrapped it in the wrong quotes.