快速提问,我该怎么做才有效:
if($this->datos->bathrooms == "1½"){$select1 = JText::_( 'selected="selected"' );}
似乎无法识别½
。我尝试将其写为½
,但它会逐字地查找½
,而不是½
符号。有什么想法吗?
答案 0 :(得分:4)
正如其他许多人所说,你很可能会遇到字符编码问题。我不确定PHP支持哪些编码,但您需要考虑整个图片。对于此示例,我假设您的PHP脚本正在响应FORM帖子。
您正在进行字符串比较,它会分解为字节比较,但组成字符的字节取决于使用的编码。 As Peter Bailey wrote,
您需要在每个步骤中验证文本编码,以确保它按预期发生。您可以通过将浏览器自动检测到的编码中的编码更改为其他内容来验证发送到浏览器的数据,以查看页面的更改方式。
如果您的数据不是来自浏览器,而是来自数据库,则需要检查应用和数据库之间的编码。
最后,我建议使用像1½这样的字符串作为比较关键字是不切实际的。我建议使用1.5并在显示时检测,然后改变数据的显示方式。优点:如果值是数字而不是字符串等,您可以按浴室数量订购结果。另外,您可以避免像这样的错误。
答案 1 :(得分:1)
您要查找的字符是Unicode字符Vulgar Fraction One Half
有多种方法可以确保正确显示此字符,所有这些方法都取决于数据的编码。通过查看here,我们可以看到
BD
C2BD
这意味着如果您的PHP文件是UTF-8编码的,但是您将其作为ISO-8850-1(或其他方式)发送到浏览器,则该字符将无法正确呈现。
正如其他人发布的那样,您也可以将HTML实体用于此字符,该字符将与字符编码无关,并且无论输出编码如何,都将正确呈现(以HTML格式)。
答案 2 :(得分:0)
尝试将其与"1½"
答案 3 :(得分:0)
使用PHP chr
函数以十六进制0xBD或dec 189创建字符:
if($this->datos->bathrooms == "1".chr(189)){$select1 = JText::_( 'selected="selected"' );}