Toon posts:

entities vervangen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Aloha,

Voor een functie die Search engine friendly urls creëert mis ik nog 1 stukje die het volgende kan:

Een woord als creëert moet creeert worden. Nu kan ik hier niet zo makkelijk informatie over vinden. htmlentities en htmlspecialchars converteren alleen naar entities en een oplossing met str_replace en een grote array definieren vind ook niet zo'n elegante oplossing (tenzij niet anders kan). Iemand hier een geniaal idee voor moi?

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Hola,

Ik had een soortgelijk probleem een tijd terug. Heb het inderdaad met een array opgelost:
PHP:
1
2
3
4
5
6
$a = array( 'àáâäã' => 'a',
            'ç'     => 'c',
            'èéêë'  => 'e' );
foreach ( $a as $key => $value ) {
  $s = preg_replace( "/[$key]/", $value, $s );
}

Developer Accused Of Unreadable Code Refuses To Comment


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 09:18

RM-rf

1 2 3 4 5 7 6 8 9

http://de2.php.net/strtr

de comments hier gaan vrijwel enkel over dit probleem, er bestaat volgens mij geen 'standaard' functie voor en je zult het dus altijd met str_replace() of strtr() moeten doen..

overigens zou ik het dan altijd zo laten doen dat er een cache bestaat met redirects voor de SEFU's, zodat deze niet de hele tijd heen-en-weer gerenderd moeten worden maar je de verwijzing direkt op kunt zoeken

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Topicstarter
Ik ben voorlopig wel weer even zoet. Dank jullie

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
PHP:
1
$result = iconv($from_enc, 'US-ASCII//TRANSLIT', $text);

Werkt dit niet? :)

Dat staat in de commentaren van de mb_string functies.
Daar staan nog wel meer opties die het proberen en/of kunnen. :)

klikkerdeklik

[ Voor 55% gewijzigd door Gonadan op 04-04-2007 16:00 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Icelus
  • Registratie: Januari 2004
  • Niet online
Gonadan schreef op woensdag 04 april 2007 @ 15:54:
PHP:
1
$result = iconv($from_enc, 'US-ASCII//TRANSLIT', $text);

Werkt dit niet? :)

Dat staat in de commentaren van de mb_string functies.
Daar staan nog wel meer opties die het proberen en/of kunnen. :)

klikkerdeklik
‘Werkt’ maar er is dan nog een 2e stap nodig. Een string als ‘ideeën enquête’ levert ‘idee"en enqu^ete’ op. Je zou uiteraard alle " ^ ` ' ~ er dan nog uit kunnen filteren.

Developer Accused Of Unreadable Code Refuses To Comment


  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Icelus schreef op woensdag 04 april 2007 @ 16:05:
[...]
‘Werkt’ maar er is dan nog een 2e stap nodig. Een string als ‘ideeën enquête’ levert ‘idee"en enqu^ete’ op. Je zou uiteraard alle " ^ ` ' ~ er dan nog uit kunnen filteren.
PHP:
1
$result = preg_replace('/&(\w)\w+;/', "\$1", htmlentities("ideeën enquête", ENT_NOQUOTES, "UTF-8"));

Even aanpassen aan jouw wensen en je krijgt het toch op 1 regel. :P

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Icelus
  • Registratie: Januari 2004
  • Niet online
Gonadan schreef op woensdag 04 april 2007 @ 16:23:
[...]

PHP:
1
$result = preg_replace('/&(\w)\w+;/', "\$1", htmlentities("ideeën enquête", ENT_NOQUOTES, "UTF-8"));

Even aanpassen aan jouw wensen en je krijgt het toch op 1 regel. :P
Een ‘one-liner’ ;)

Volgend probleem:
‘ideeën & enquête’ wordt ‘ideeen a enquete’ en
‘ideeën & enquête’ wordt ‘ideeen aamp; enquete’

Developer Accused Of Unreadable Code Refuses To Comment


  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Je mag zelf ook wel wat proberen hoor. ;)
PHP:
1
$result = preg_replace('/&(\w)(grave|acute|uml|circ|tilde|ring|lig|cedil|slash);/', "\$1", htmlentities("ideeën enquête", ENT_NOQUOTES, "UTF-8"));

Zo heb je de meeste wel. :)

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Verwijderd

In een character set als iso-8859-1 kun je geloof ik gebruik maken van de eerste byte en dus de tweede volledig negeren. aar ik moet bekennen dat het een beetje een klok-klepel verhaal voor me is wat dat betreft.

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Gonadan schreef op woensdag 04 april 2007 @ 16:42:
Je mag zelf ook wel wat proberen hoor. ;)
PHP:
1
$result = preg_replace('/&(\w)(grave|acute|uml|circ|tilde|ring|lig|cedil|slash);/', "\$1", htmlentities("ideeën enquête", ENT_NOQUOTES, "UTF-8"));

Zo heb je de meeste wel. :)
Mijn eerste functie werkte prima ;)


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$s = 'ä ë ï ö ü ñ à ã ç ß å ® þ ü à ð ø æ';
echo $s.'<br/>';


// Extended ASCII markeren
$s = preg_replace('/[\x80-\xff]/', chr(2).'\0'.chr(3), $s );

// Omzetten naar ASCII
$s = iconv('ISO-8859-1', 'ASCII//TRANSLIT', $s);

// Karakters zoals ë zijn nu omgezet naar MARKERING " e MARKERING
// Filter de karakters er uit
$s = preg_replace('/[\x2]\W?(\w+)[\x3]/', '\1', $s );


echo $s.'<br/>';

[ Voor 36% gewijzigd door Icelus op 05-04-2007 07:22 ]

Developer Accused Of Unreadable Code Refuses To Comment

Pagina: 1