比较相等的字符串会返回false

时间:2015-12-11 08:43:17

标签: php

第一个字符串从数据库加载到'textarea'。在第二步中,我想检查textarea中的文本是否与数据库中的相同文本一起更改....所有内容都是UTF-8编码。

我已经阅读了大量类似的线程,总是存在空白问题。这是我尝试的:

$defaultTextblock = $this->textBlockTable->getTextBlock($textBlock->templateID);
$defaultTextblock->text = str_replace("\0", "", $defaultTextblock->text);
if(strcmp(trim($defaultTextblock->text), trim($textBlock->text)) !== 0)
{
    $textBlock = $this->textBlockTable->addDocumentTextBlock($textBlock);
}

它仍然说不平等......这里是var_dumps + xdebug:

文本框中的文字:

  

字符串'Bei weiteren Fragen,stehen wir Ihnen jederzeitzurVerfügungundsehen Ihrer Stellungnahme entgegen。 Entspricht das Angebot nicht Ihren Erwartungen? Dann geben Sie uns umgehend Bescheid,damit wir uns sofort um einAlternativangebotbemühenkönnen! Bitte beachten Sie,dass sich dieses Angebot biszurendgültigenVertragsunterzeichnungfreibleibend versteht。 Ferner表现得非常不可靠,而且他们不仅仅是一个问题。 (长度= 458)

数据库中的文本(defaultTextBlock):

  

字符串'Bei weiteren Fragen,stehen wir Ihnen jederzeitzurVerfügungundsehen Ihrer Stellungnahme entgegen。 Entspricht das Angebot nicht Ihren Erwartungen? Dann geben Sie uns umgehend Bescheid,damit wir uns sofort um einAlternativangebotbemühenkönnen! Bitte beachten Sie,dass sich dieses Angebot biszurendgültigenVertragsunterzeichnungfreibleibend versteht。 Ferner表现得非常不可靠,而且他们不仅仅是一个问题。 (长度= 456)

我真的不明白这个问题...... 我知道长度不同但为什么呢?

1 个答案:

答案 0 :(得分:0)

问题是PHP在Windows IIS下运行(我没有提到过),数据库是MySQL。两者都使用不同的方法来处理断裂线。

  • Windows正在使用\r\n
  • MySQL(和Linux)正在使用\n

可悲的是,区块代码并没有显示文本中有一个断线,否则你们中的一些人肯定已经找到了答案。正好有1个突破线,额外的\r是差异' 2'在长度