Hallo
Momenteel gebruik ik een functie om bv é te wijzigen naar e.
Deze functie werkt wanneer ik het op dezelfde pagina plaats als functie.
Het werkt echter niet wanneer ik dat via een klasse doe ... waarom niet ?
Werkt wel
werkt nietCode:function url_safe($url){ // uppercase also listed but not used | not used : 'd'=>'dj' $invalid = array('Š'=>'S', 'š'=>'s', 'Ð'=>'Dj', 'Ž'=>'Z', 'ž'=>'z','C'=>'C', 'c'=>'c', 'C'=>'C', 'c'=>'c', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E','Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y','Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i','î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b','ÿ'=>'y', 'R'=>'R', 'r'=>'r', "`" => "'", "´" => "'", "„" => ",", "`" => "'", "´" => "'", "“" => "\"", "”" => "\"", "´" => "'", "’" => "'", "{" => "","~" => "", "–" => "-", "’" => "'", " & " => "-", " " => "-", "/" => "-", "." => "-", "--" => "-"); $url = html_entity_decode($url); // replace html entitie by character $url = strtolower($url); // convert to lowercase $url = str_replace(array_keys($invalid), array_values($invalid), $url); // array find and replace $url = preg_replace('/[^A-Za-z0-9-]/', '', $url); // strip all strange characters ( keep a-z + 0-9 + _ ) $url = str_replace("--","-",$url); // replace double dash by single dash $url = trim($url,"-"); // trim underscores start + end return $url; } // function url_safe($url) echo url_safe("aéa");
Mijn functie wordt aangeroepen, ook in het niet werkende deel.Code:class website { function url_safe($url){ // uppercase also listed but not used | not used : 'd'=>'dj' $invalid = array('Š'=>'S', 'š'=>'s', 'Ð'=>'Dj', 'Ž'=>'Z', 'ž'=>'z','C'=>'C', 'c'=>'c', 'C'=>'C', 'c'=>'c', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E','Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y','Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i','î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b','ÿ'=>'y', 'R'=>'R', 'r'=>'r', "`" => "'", "´" => "'", "„" => ",", "`" => "'", "´" => "'", "“" => "\"", "”" => "\"", "´" => "'", "’" => "'", "{" => "","~" => "", "–" => "-", "’" => "'", " & " => "-", " " => "-", "/" => "-", "." => "-", "--" => "-"); $url = html_entity_decode($url); // replace html entitie by character $url = strtolower($url); // convert to lowercase $url = str_replace(array_keys($invalid), array_values($invalid), $url); // array find and replace $url = preg_replace('/[^A-Za-z0-9-]/', '', $url); // strip all strange characters ( keep a-z + 0-9 + _ ) $url = str_replace("--","-",$url); // replace double dash by single dash $url = trim($url,"-"); // trim underscores start + end return $url; } // function url_safe($url) } echo $website->url_safe("aéa");
Bij het niet werkende deel krijg ik " aa " als output.
Ik was zelf al aan het zoeken op UTF etc ... geen idee of het daarmee te maken heeft.
De waarde komt uit mijn database : Varchar(250) latin1_swedish_ci
Iemand een idee ?
Met vriendelijke groeten
Wesley
- str_replace van é naar e werkt niet
-
30-09-2014, 12:40 #1
- Berichten
- 940
- Lid sinds
- 15 Jaar
str_replace van é naar e werkt niet
-
01-10-2014, 06:25 #2
- Berichten
- 115
- Lid sinds
- 11 Jaar
Re: str_replace van é naar e werkt niet
Even een public function van maken gok ik zo
-
01-10-2014, 07:11 #3
- Berichten
- 446
- Lid sinds
- 12 Jaar
Re: str_replace van é naar e werkt niet
$website bestaat nog niet geloof ik, deze moet je eerst declareren denk ik;
PHP Code:$website = new Website;
Daniel Warnaar
Sandcastle.nl
-
01-10-2014, 08:19 #4
- Berichten
- 940
- Lid sinds
- 15 Jaar
Re: str_replace van é naar e werkt niet
Hallo
Helaas is dit niet de oplossing. Ik geraak in de functie en wordt ook uitgevoerd.
Uit de tweede code komt " aa " als uitgeprinte waarde.
De " é " valt weg voor deze regel : $url = preg_replace('/[^A-Za-z0-9-]/', '', $url); ( bedoeling )
Eigenlijk zou de regel erboven de " é " naar " e " moeten vervangen, dat gebeurt niet.
Groeten
Wesley
-
01-10-2014, 09:03 #5
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: str_replace van é naar e werkt niet
De functie en de class uit je voorbeeld werken hier wel. Ok, je moet even een
$var = new website();
echo $var->url_safe("aéa");
doen en niet de class dezelfde naam geven als je variabele of zoals in jouw voorbeeld, helemaal niet aanmaken.
-
08-11-2014, 13:35 #6
- Berichten
- 940
- Lid sinds
- 15 Jaar
-
08-11-2014, 14:18 #7
- Berichten
- 940
- Lid sinds
- 15 Jaar
Re: str_replace van é naar e werkt niet
UPDATE : ik heb de functie gewijzigd naar
Code:function url_safe($url){ // uppercase also listed but not used | not used : 'd'=>'dj' $invalid = array('Š'=>'S', 'š'=>'s', 'Ð'=>'Dj', 'Ž'=>'Z', 'ž'=>'z','C'=>'C', 'c'=>'c', 'C'=>'C', 'c'=>'c', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E','Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y','Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i','î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b','ÿ'=>'y', 'R'=>'R', 'r'=>'r', "`" => "'", "´" => "'", "„" => ",", "`" => "'", "´" => "'", "“" => "\"", "”" => "\"", "´" => "'", "’" => "'", "{" => "","~" => "", "–" => "-", "’" => "'", " & " => "-", " " => "-", "/" => "-", "." => "-", "--" => "-"); $url = html_entity_decode($url); // replace html entitie by character $url = str_replace(array_keys($invalid), array_values($invalid), $url); // array find and replace $url = preg_replace('/[^A-Za-z0-9-]/', '', $url); // strip all strange characters ( keep a-z + 0-9 + _ ) $url = strtolower($url); // convert to lowercase $url = str_replace("--","-",$url); // replace double dash by single dash $url = trim($url,"-"); // trim underscores start + end return $url; } // function url_safe($url)
Code:$website->url_safe("aéx");
-
08-11-2014, 18:38 #8
- Berichten
- 108
- Lid sinds
- 16 Jaar
Re: str_replace van é naar e werkt niet
meest waarschijnlijk moet je eerst even decoden ,.
echo $website -> url_safe( utf8_decode( $db_veld ) );
-
09-11-2014, 14:27 #9
- Berichten
- 940
- Lid sinds
- 15 Jaar
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic