Avatar billede chrisrj Forsker
29. oktober 2006 - 13:38 Der er 14 kommentarer og
1 løsning

replace alle specialtegn i php

Hejsa

Jeg skal replace alle specialtegn i nogle strings i php, dog har jeg aldrig brugt regexp før, så jeg aner ikke hvordan man gør. :(

Jeg har prøvet med dette, som naturligvis ikke virker:

$pattern = '[€-ý]';
$replacement = '["€"-"ý"]';
$str = eregi_replace($pattern, $replacement, $str);

Så hvordan skal man gøre det??
Avatar billede jensgram Nybegynder
29. oktober 2006 - 14:02 #1
Vil du lave dem om til HTML-entities?

I så fald skulle htmlentities() kunne klare det.
Avatar billede jensgram Nybegynder
29. oktober 2006 - 14:02 #2
Avatar billede jensgram Nybegynder
29. oktober 2006 - 14:04 #3
Nej, undskyld - det gør den vist ikke.

2 sec.
Avatar billede udvikler Nybegynder
29. oktober 2006 - 14:11 #4
Altså, jeg ved ikke helt hvad du mener med speciel tegn så jeg har lige lavet en der fjerner æ,ø og å... så kan du altid rette det til.

<?php
$var = ereg_replace("æ+", "", $var);
$var = ereg_replace("ø+", "", $var);
$var = ereg_replace("å+", "", $var);
?>
Avatar billede jensgram Nybegynder
29. oktober 2006 - 14:12 #5
$str = '€ý}„‹’™§';
$str = preg_replace('/[€-ý]/e', "'&#' . ord('\\0') . ';'", $str);
print $str;

Testet!
Avatar billede udvikler Nybegynder
29. oktober 2006 - 14:15 #6
Ellers prøv med

$var = eregi_replace("([_.a-z0-9-], $var);
Avatar billede jensgram Nybegynder
29. oktober 2006 - 14:18 #7
-aco- > Jeg tror ikke chrisrj vil fjerne specialtegn, men lave dem om til entiteter i HTML...
Avatar billede udvikler Nybegynder
29. oktober 2006 - 14:22 #8
Hmm, hans overskrift siger da noget andet ;-)
Avatar billede jensgram Nybegynder
29. oktober 2006 - 14:26 #9
Nej, der står replace, ikke remove :P

Jeg er selvfølgelig ikke sikker, men lad os høre hvad spørger siger.
Avatar billede chrisrj Forsker
29. oktober 2006 - 16:42 #10
Hehe...lidt forvirring, kan jeg se :)

Min overskrift siger det rigtige - jeg vil erstatte alle specielle tegn i forskellige strenge. De skal IKKE laves til noget html-agtigt - html har intet med mit projekt at gøre.
Jeg har hentet tegnene herfra:
http://www.petefreitag.com/cheatsheets/ascii-codes/
fra kolonnen "Extended ASCII"

mht. hvordan og hvorledes, prøvede jeg også den måde som -aco- skrev 14:11:14. Men i og med der er ca. 130-150 tegn, synes jeg det er lidt for besværligt :)
Avatar billede jensgram Nybegynder
29. oktober 2006 - 16:56 #11
Betyder det ikke, at du vil ændre € til &#128; og ý til &#253; ?

$pattern = '[€-ý]';
$replacement = '["&#128;"-"&#253;"]';

I så fald skulle

$str = '€ý}„‹’™§';
$str = preg_replace('/[€-ý]/e', "'&#' . ord('\\0') . ';'", $str);
print $str;

gøre tricket.
Avatar billede jensgram Nybegynder
30. oktober 2006 - 07:57 #12
Vil du blot fjerne dem, er

$str = '€ý„‹’™§';
$str = preg_replace('/[€-ý]/', '', $str);
print $str;

Naturligvis løsningen
Avatar billede masik7 Nybegynder
31. oktober 2006 - 13:35 #13
preg_replace('/[^!-%\x27-;=?-~ ]/e', '"&#".ord("$0").chr(59)', $str);
Avatar billede chrisrj Forsker
03. november 2006 - 11:51 #14
Stort, det ser ud til at virke :)

jensgram - smid et svar! :)
Avatar billede jensgram Nybegynder
04. november 2006 - 12:18 #15
Godt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester