简体   繁体   English

比较相等的字符串返回false

[英]Compareing equal strings returns false

The first string is loaded from the database into a 'textarea'. 第一个字符串从数据库加载到“ textarea”中。 In the second step i want to check if the text is changed in the textarea with the same text from the database.... everything is UTF-8 encoded. 在第二步中,我想检查文本区域中的文本是否与数据库中的相同文本发生了更改。...一切均以UTF-8编码。

I already read tons of similar threads, there where always whitespaces the problem. 我已经读过很多类似的线程,在这些地方总是用空格隔开问题。 This is what i try: 这是我尝试的:

$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);
}

And it still says there are not equal.... here are the var_dumps + xdebug: 它仍然说不相等。...这是var_dumps + xdebug:

The text from the textbox: 来自文本框的文本:

string 'Bei weiteren Fragen, stehen wir Ihnen jederzeit zur Verfügung und sehen Ihrer Stellungnahme entgegen. 字符串'Bei weiteren Fragen,Stehen wir Ihnen jederzeit zurVerfügung和sehen Ihrer Stellungnahme entgegen。 Entspricht das Angebot nicht Ihren Erwartungen? Entspricht das Angebot在Ihren Erwartungen吗? Dann geben Sie uns umgehend Bescheid, damit wir uns sofort um ein Alternativangebot bemühen können! Dann geben Sie uns umgehend Bescheid,请不要在Alternativangebotbemühenkönnen上感到安慰! Bitte beachten Sie, dass sich dieses Angebot bis zur endgültigen Vertragsunterzeichnung freibleibend versteht. Bitte beachten Sie,死于Angebot bis zurendgültigenVertragsunterzeichnung freibleibend versteht。 Ferner behalten wir uns Irrtümer bei Angaben zu Ausstattungen und Leistungsmerkmalen vor.' Ferner behalten wir unsIrrtümerbei Angaben zu Ausstattungen und Leistungsmerkmalen vor。” (length=458) (长度= 458)

The text from the database(defaultTextBlock): 来自数据库的文本(defaultTextBlock):

string 'Bei weiteren Fragen, stehen wir Ihnen jederzeit zur Verfügung und sehen Ihrer Stellungnahme entgegen. 字符串'Bei weiteren Fragen,Stehen wir Ihnen jederzeit zurVerfügung和sehen Ihrer Stellungnahme entgegen。 Entspricht das Angebot nicht Ihren Erwartungen? Entspricht das Angebot在Ihren Erwartungen吗? Dann geben Sie uns umgehend Bescheid, damit wir uns sofort um ein Alternativangebot bemühen können! Dann geben Sie uns umgehend Bescheid,请不要在Alternativangebotbemühenkönnen上感到安慰! Bitte beachten Sie, dass sich dieses Angebot bis zur endgültigen Vertragsunterzeichnung freibleibend versteht. Bitte beachten Sie,死于Angebot bis zurendgültigenVertragsunterzeichnung freibleibend versteht。 Ferner behalten wir uns Irrtümer bei Angaben zu Ausstattungen und Leistungsmerkmalen vor.' Ferner behalten wir unsIrrtümerbei Angaben zu Ausstattungen und Leistungsmerkmalen vor。” (length=456) (长度= 456)

I really dont get the problem... I know that the length is different but why? 我真的不明白这个问题...我知道长度不同,但是为什么呢?

The problem was that PHP is running under Windows IIS(what i didnt mendtioned) and the Database is MySQL. 问题是PHP在Windows IIS(我没有提到)下运行,而数据库是MySQL。 There are both using different ways to handle break-lines. 两种方法都使用不同的方式来处理折线。

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

Sadly the blockcode didnt showed that the text had a break-line in it otherwise some of you guys for sure had found the answer already. 可悲的是,该阻止代码并未显示出该文本中包含一个换行符,否则,你们中的某些人肯定已经找到了答案。 There was exactly 1 break-line and the additional \\r are the difference '2' in the length 恰好有1条折线,附加\\r为长度差'2'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM