【问题标题】:replace special character ÷ with ö用 ö 替换特殊字符 ÷
【发布时间】:2014-04-05 14:14:11
【问题描述】:

对于一个客户,我做了一个 XML 耦合,效果很好,但是在内容中有一个像“÷”这样的字符,这个字符必须是一个“ö”。我已经在此论坛和其他论坛上进行了搜索,但找不到任何解决方案。甚至 preg_replace 也不起作用。

有人可以帮帮我吗?

内容: Preise sind ohne Mehrwertsteuer。 An die abgelesen Laufleistung , abgegeben Massen, Spezifikationen und Gewichten k÷nnen keine Rechten abgeleitet werden。

必须转换为: Preise sind ohne Mehrwertsteuer。 An die abgelesen Laufleistung , abgegeben Massen, Spezifikationen und Gewichten können keine Rechten abgeleitet werden.

从帖子中尝试过,但不起作用:

$content = $sitemap[0]->description;

// replace line breaks with <br /> 
$html = nl2br(htmlspecialchars($content)); 

$output=str_replace('÷', 'ö', $html); 

echo $output; 

$content = $sitemap[0]->description;

// replace line breaks with <br /> 
$html = nl2br(htmlspecialchars($content)); 

$output=str_replace('÷', 'ö', $html); 

echo $output;

【问题讨论】:

  • 为什么要更换?其背后的逻辑是什么?到目前为止,为了实现这一目标,您做了什么尝试?
  • 他的内容有荷兰语、英语和德语等多种语言。 wordt 必须是 können 而不是 k÷nnen - $html = preg_replace('/k÷nnen/','konnen', $html);
  • 我几乎 100% 确信您的客户端确实输入了正确的字符,并且正在以不同的编码方法写入文件,这很可能从服务器的默认方式提供编码设置为。 @user3366162
  • 你能把xml文件上传到某个地方吗?我猜这是错误编码和读取错误编码文件的组合。

标签: php html xml


【解决方案1】:

编辑#2:我几乎 100% 确信您的客户端确实输入了正确的字符,并且正在以不同的编码方法写入文件,这很可能提供从服务器的默认编码设置的方式。我之前遇到过“exact”问题,无法修改服务器的设置,不得不在写入文件之前查找和替换字符。


原来的答案不起作用,很可能是因为我上面的评论。 ^^^

您可以使用str_replace() 函数实现此目的。

<?php
$replace='k÷nnen';
$new=str_replace('÷', 'ö', $replace); 

echo $new;

将回显können


编辑 1

我已经对此进行了测试并且它有效,减去了[0]-&gt;description,因为我不知道内容是从哪里提取的。

<?php
$sitemap = "Preise sind ohne Mehrwertsteuer. An die abgelesen Laufleistung , abgegeben Massen, Spezifikationen und Gewichten k÷nnen keine Rechten abgeleitet werden.";

// $content = $sitemap[0]->description; // replace line breaks with <br />
$content = $sitemap; // replace line breaks with <br /> 

$html = nl2br(htmlspecialchars($content)); 
$output=str_replace('÷', 'ö', $html); 
echo $output;

?>

【讨论】:

  • 不适合我,可能是因为我需要回显许多内容?我有以下内容: Preise sind ohne Mehrwertsteuer。 An die abgelesen Laufleistung , abgegeben Massen, Spezifikationen und Gewichten k÷nnen keine Rechten abgeleitet werden。而我目前的 php 是: $content = $sitemap[0]->description; // 用
    替换换行符 $html = nl2br(htmlspecialchars($content)); $output=str_replace('÷', 'ö', $html);回声$输出;但这不起作用,它一直给我 k÷nnen
  • 让我看看我还能想出什么。 @user3366162
  • 内容“Preise sind ohne Mehrwertsteuer...”是在变量中还是在$content 中?我需要知道该文本是否来自该文本,或者只是在 &lt;body&gt; 中作为纯文本。 @user3366162
  • 我从外部站点地图获取内容“Preise sind ohne Mehrwertsteuer...”,我使用 $content = $sitemap[0]->description;我从 xml 中以普通的 tekst 得到它,这就是我添加换行符的原因。 xml 中的数据存储如下:
  • 好的。我进行了编辑并对其进行了测试,减去了[0]-&gt;description,它对我有用。 @user3366162
【解决方案2】:

当您在屏幕上看到像 ÷ 这样的字符组合时,总是因为您(在处理管道中的某个位置)有以 UTF-8 编码的内容,但某些软件组件正在读取它以 Latin-1 编码(或类似的东西,例如 Windows CP1252)。

问题是通过处理管道追溯这一点,以找出错误发生的位置。它可能处于显示输出的最后阶段,也可能发生得更早。您需要通过所有处理阶段追溯数据以找出问题所在,并在发生“误解”的地方更改其中一个错误通信组件的配置,以便就字符编码达成一致正在使用。

【讨论】:

  • 感谢您的回复,我已经测试过,错误似乎是在 XML 编码中,但是当我将 XML 编码从 UTF-8 更改为 Latin-1 / ISO-8859- 1 / ISO-8859-15 或 Windows-1252 它显示 kšnnen 而不是 können。我在 google 和 WikiPedia 上进行了搜索,两个结果都表明 ISO-8859-1 应该是变音符号的正确选择。但这对我不起作用..
  • 使用十六进制编辑器找出违规字符的实际二进制编码是什么。
猜你喜欢
  • 1970-01-01
  • 2014-11-03
  • 2019-09-23
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 2020-07-21
相关资源
最近更新 更多