Php if(mb_strlen()!=#)的问题

Php if(mb_strlen()!=#)的问题,php,conditional,Php,Conditional,这可能是非常肮脏和混乱的代码,因此任何输入都会很有帮助,但我的主要问题是,如果字符串的字符数(10或13)正确,我无法处理“ISBN”输入。我不确定哪里出了问题。在64号线 请帮忙!多谢各位 链路发生器 这始终计算为true: ((mb_strlen($_POST['ISBN'], 'utf-8') != 13) | (mb_strlen($_POST['ISBN'], 'utf-8') != 10)) 你是说“如果ISBN不是13个字符长或者ISBN不是10个字符长,那么是真的”。但任

这可能是非常肮脏和混乱的代码,因此任何输入都会很有帮助,但我的主要问题是,如果字符串的字符数(10或13)正确,我无法处理“ISBN”输入。我不确定哪里出了问题。在64号线

请帮忙!多谢各位


链路发生器

这始终计算为true:

((mb_strlen($_POST['ISBN'], 'utf-8') != 13) | (mb_strlen($_POST['ISBN'], 'utf-8') != 10))
你是说“如果ISBN不是13个字符长或者ISBN不是10个字符长,那么是真的”。但任何字符串都不能同时包含13个字符和10个字符

请尝试以下方法:

!((mb_strlen($_POST['ISBN'], 'utf-8') == 13) | (mb_strlen($_POST['ISBN'], 'utf-8') == 10))

这将是“如果不是ISBN为13个字符或ISBN为10个字符,则为真”。

既然您要求输入代码,请尽可能将处理和演示分开。我喜欢像Smarty一样使用模板系统。如果生产太大,请考虑在一个文件中准备表单并用另一个文件显示。当你知道你可以改变逻辑而不必费力地通过/破坏界面时,生活会变得容易得多。另外,别忘了验证文章中的数据。假设用户是邪恶的。:)对不起,我是php新手,如何验证它?在这种情况下,我不认为这是必要的,因为它只是生成一个指向搜索查询的链接?@jmala是正确的。您在上面执行的验证应该足以生成链接—您调用的web服务也应该验证它们的输入,因此可能发生的最坏情况是您生成了一个坏链接,因为用户提供了坏数据。不过,一般来说,验证是一个好主意,如果没有其他方法的话,只要在脚本对输入做出假设的情况下阻止它爆炸就行了。看看PHP过滤器文档:@jmalais很棒!由于它有效,您应该单击它旁边的复选标记,将此答案标记为已接受!:)是的,不用担心,我本来打算早点去的,但我不得不等着,有点忙着收尾工作。
!((mb_strlen($_POST['ISBN'], 'utf-8') == 13) | (mb_strlen($_POST['ISBN'], 'utf-8') == 10))