Versio

Van ë naar e, Ö naar O, enz

Overzicht Reageren

Barman V

Barman V

21/03/2006 11:18:00
Quote Anchor link
Beste allen,

Wat is de makkelijkste manier om de trema's (ë Ë), streepjes (é È) weg te halen, dus dat je gewoon krijgt e of E. Dit is alleen een voorbeeld met de letter e, maar het betreft ook met een o, u, y, i, a.

Ik heb zelf al gekeken naar ereg_replace en preg_replace, maar kon daarmee niet uit de voeten om iets makkelijks te maken.

Of moet ik het echt zo doen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$data
= str_replace(array('ë', 'ï', '&#10;'), array('e', 'i', ' '), $data);
//enz
?>


Ik heb namelijk een SAX parser gemaakt die xml documenten omzet in bruikbare tekst, maar hij doet gek bij ë, ä, Ë, &amp; enz.

Als ik iets met htmlentities / -specialchars wil doen krijg ik een xml foutmelding
XML error: Empty document at line 1
 
PHP hulp

PHP hulp

25/05/2012 17:18:44
Gesponsorde koppelingen:
 
- SanThe -

- SanThe -

21/03/2006 11:23:00
 
Elwin - Fratsloos

Elwin - Fratsloos

21/03/2006 11:24:00
Quote Anchor link
Edit:
Oeps geef je eigenlijk dezelfde functie als je zelf had, maar dan iets anders.. :)

Elwin
Gewijzigd op 21/03/2006 11:26:00 door Elwin - Fratsloos
 
Barman V

Barman V

21/03/2006 11:37:00
Quote Anchor link
Bedankt voor de reacties.

@SanThe
Ik had inderdaad ook al naar strtr gekeken, maar dan moet ik nog steeds alles met de hand veranderen. Ik heb nu dus:

$trans = array(
'ë' => 'e',
'Ë' => 'E',
'ö' => 'o',
'Ö' => 'O'
);
$data = strtr($data, $trans);

Maar is er geen makkelijkere manier? Alleen al om die hoofdlettergevoeligheid eruit te halen, dus dat ik geen onderscheid hoef te maken met e en E. Met strtolower maakt hij mij $data ook klein en dat wil ik liever niet.
 
Bas Kreleger
Beheerder

Bas Kreleger

21/03/2006 11:40:00
Quote Anchor link
Probeer dit eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
str_replace("\"", "&quot;", str_replace("'", "&#039;", htmlspecialchars(htmlentities($data))));
?>
 
Barman V

Barman V

21/03/2006 11:58:00
Quote Anchor link
Dan krijg ik nog de xml fout
XML error: Empty document at line 1

De reden dat ik die " en ' wil verwijderen is dat de SAX-parser bijvoorbeeld het woord financiën splitst in:
financi
ën

Het is mij een raadsel waarom? Net als de &amp;
Dus van:
Veel gestelde vragen & glossary

Maakt hij:
Veel gestelde vragen
&
glossary

Als daar een oplossing voor bestaat ben ik helemaal blij.
 
Barman V

Barman V

21/03/2006 12:34:00
Quote Anchor link
Uit pure wanhoop heb ik er maar dit van gemaakt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$trans
= array(
    'ë' => 'e', 'Ë' => 'E', 'é' => 'e', 'É' => 'E', 'è' => 'e', 'È' => 'E', 'ê' => 'e', 'Ê' => 'E',
    'ö' => 'o', 'Ö' => 'O', 'ó' => 'o', 'Ó' => 'O', 'ò' => 'o',    'Ò' => 'O',    'ô' => 'o',    'Ô' => 'O',    'õ' => 'o', 'Õ' => 'O',
    'ï' => 'i',    'Ï' => 'I', 'í' => 'i',    'Í' => 'I', 'ì' => 'i',    'Ì' => 'I', 'î' => 'i',    'Î' => 'I',
    'ä' => 'a', 'Ä' => 'A', 'á' => 'a', 'Á' => 'A', 'à' => 'a', 'À' => 'A', 'â' => 'a', 'Â' => 'A', 'ã' => 'a', 'Ã' => 'A',
    'ü' => 'u',    'Ü' => 'U', 'ú' => 'u',    'Ú' => 'U', 'ù' => 'u',    'Ù' => 'U', 'û' => 'u',    'Û' => 'U',
    'ÿ' => 'y', 'ý' => 'y', 'Ý' => 'Y',
    '&#10;' => ' ',
    '&amp;' => 'en',
    '&lt;' => ' ',
    '&gt;' => ' ',
    '&quot;' => '"',
);

$data = strtr($data, $trans);
?>


Lang leve DOM :D, dan had ik dit probleem niet gehad. Maar mijn host ondersteund geen php5.
 



Overzicht Reageren