WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   ta bort konstigt tecken från text [php] (https://www.wn.se/forum/showthread.php?t=1042776)

radioaktivitet 2010-07-04 11:41

ta bort konstigt tecken från text [php]
 
Denna text innehåller ett konstigt tecken. Mellan bokstaven a och b så ser det ut som om det bara är ett vanligt mellanrum. Men det är ytterligare ett tecken innan b, som inte syns för ögat. Hur gör jag för att ta reda på vilket tecken det är så att jag kan ta bort det med hjälp av php?

----
a b
----

Tack för hjälpen!

radioaktivitet 2010-07-04 12:00

Jag kan ju nämna att jag redan försökt detta, utan att det hjälpte:

$text = iconv("UTF-8","UTF-8//IGNORE",$text);

Anledningen att jag måste få bort tecknet är att det återfinns i ett av mig genererat RSS-flöde. Och flödet valideras inte just pga detta tecken. Får 'not well-formed (invalid token)' från validatorn.

BjörnJ 2010-07-04 12:03

Ett alternativ är att göra något i stil med det här:
PHP-kod:

$str=preg_replace('/[^-_a-zA-Z0-9]/','',$str); 

Om du vet vilka tecken du vill tillåta. Den tar bort alla tecken utom de angivna.

radioaktivitet 2010-07-04 12:20

Citat:

Ursprungligen postat av BjörnJ (Inlägg 20361399)
Om du vet vilka tecken du vill tillåta. Den tar bort alla tecken utom de angivna.

Tyvärr vet jag inte vilka tecken jag vill tillåta... Texterna kommer från lite olika håll. Risken är att jag missar att speca ett tecken, som jag borde tillåtit. Så jag föredrar att göra tvärtom - dvs ta bort tecken som jag inte vill tillåta.

nosnaj 2010-07-04 12:40

Kika vilket hexvärdet är för tecknet så kan du ta bort det sedan. Alternativt ber du om att få en rss som inte har teckenkodningproblem eftersom fler säker lär få samma problem annars.

radioaktivitet 2010-07-04 12:45

Hur kollar jag hexvärdet? Jag klistrade in texten här på WN, och tecknet följde med. Men hur går jag vidare?

nosnaj 2010-07-04 13:07

Du kan använda diverse verktyg, tecknet du efterfrågar har hexvärde 3 och är tecken ETX (end of text)

tartareandesire 2010-07-04 14:39

Jag rekommenderar att du löser ursprungsproblemet istället. De alternativ du har annars är att ersätta specifika tecken eller rensa bort allt utom specifika tecken. Inget av dessa alternativ är optimalt utan det bästa är att lösa det bakomliggande problemet, dvs. se efter varifrån tecknet härrör.

radioaktivitet 2010-07-04 23:22

Citat:

Ursprungligen postat av nosnaj (Inlägg 20361407)
Du kan använda diverse verktyg, tecknet du efterfrågar har hexvärde 3 och är tecken ETX (end of text)

Tack! Men hur gör jag för att ta bort det från texten?

forngren 2010-07-04 23:58

En enkel str_replace borde lösa det hela. Typ:

<?php
$string = str_replace('', '', $string);
?>


Alla tider är GMT +2. Klockan är nu 05:02.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson