Ik heb een probleem met mijn rss-feed. Het probleem zit `m erin dat niet alle entity namen worden herkend door de xml-parser. Kijk maar eens naar http://www.mofert.nl/rss2.php

Is er een functie voor het omzetten van speciale tekens in entity nummers of moet ik zelf een functie maken?.
$rss = stripslashes($rss);
$rss = htmlspecialchars($rss);

:)
Het probleem is dat ik entity nummers moet hebben i.p.v. intity namen. Bijvoorbeeld "Ó" i.p.v. "Ó"
Nee, ik moet een complete teks met speciale tekens om kunnen zetten naar dezelfde tekst, maar dan de speciale tekens omgezet naar nummer-entity. Dus ongeveer hetzelfde al htmlentities(), maar dan anders.
Ik ben ff aan het zoeken voor je.
Kijk eens op deze pagina. Hier doe ik dit:

<?php
// nummers opzoeken voor entities
$str = get_html_translation_table (HTML_ENTITIES);
$str = array_flip ($str);

foreach ($str as $key => $value) {
$ord = ord ($value);
echo '<p>key: ' . $key . ', value: ' . $value . ', ord: ' . $ord . '</p>';
echo "\n";
}
?>
Hoe kan ik hiermee een string met speciale tekens omzetten naar een string met entities? op php.net stond een scriptje beschreven, maar die werkte bij mij niet:

functie, die ik op php.net heb gevonden:
<?php
function xml_character_decode($string, $trans='') {
$trans=(is_array($trans))? $trans:get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
foreach ($trans as $k=>$v)
$trans[$k]= "&#".ord($k).";";
$trans=array_flip($trans);
return strtr($string, $trans);
}
?>

Volledig script:
<?php
function xmlcharacters($string, $trans='') {
$trans=(is_array($trans))? $trans:get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
foreach ($trans as $k=>$v)
$trans[$k]= "&#".ord($k).";";
return strtr($string, $trans);
}
function xml_character_decode($string, $trans='') {
$trans=(is_array($trans))? $trans:get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
foreach ($trans as $k=>$v)
$trans[$k]= "&#".ord($k).";";
$trans=array_flip($trans);
return strtr($string, $trans);
}

$zin = "Óngerzeuk";
echo $zin;
echo "\n";
xmlcharacters($zin);
echo $zin;

?>
De eerste keer zou het woord met speciaal teken ge-echood moeten worden en de tweede keer met entity. Werkt dus niet.

?????
Nee, logisch. Kijk naar de code:

<?php
function xml_character_decode($string, $trans='') {
$trans=(is_array($trans))? $trans:get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
foreach ($trans as $k=>$v)
$trans[$k]= "&#".ord($k).";";
$trans=array_flip($trans);
return strtr($string, $trans);
}
?>

Bij foreach worden de accolades niet eens juist gebruikt. Ik zal hem voor je herschrijven. Moment.
Probeer hem zo eens:

<?php
function xml_character_decode ($string) {
// nummers opzoeken voor entities
$str = get_html_translation_table (HTML_ENTITIES);
$str = array_flip ($str);

foreach ($str as $key => $value) {
$string = str_replace ($value, '&#' . ord ($value) . ';', $string);
}

return $string;
}
?>
resultaat blijft nog steeds hetzelfde...

Reageren