Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用strstr时php if语句不起作用 $test123=“批准”; $value=strstrstr($test123,“”)//从转发中获取所有文本 $value=strstrstr($value,“,true)//获取之前的所有文本 echo$value,“”; 如果($value==“批准”){ echo“事务已批准!”;} 否则{ echo“交易被拒绝”;}_Php_If Statement - Fatal编程技术网

使用strstr时php if语句不起作用 $test123=“批准”; $value=strstrstr($test123,“”)//从转发中获取所有文本 $value=strstrstr($value,“,true)//获取之前的所有文本 echo$value,“”; 如果($value==“批准”){ echo“事务已批准!”;} 否则{ echo“交易被拒绝”;}

使用strstr时php if语句不起作用 $test123=“批准”; $value=strstrstr($test123,“”)//从转发中获取所有文本 $value=strstrstr($value,“,true)//获取之前的所有文本 echo$value,“”; 如果($value==“批准”){ echo“事务已批准!”;} 否则{ echo“交易被拒绝”;},php,if-statement,Php,If Statement,回送值部分回送“批准”,就像我预期的那样。但是if语句不起作用。我得到的结果好坏参半。我已经试过了 如果我使用$value=“批准”;它不像test123那样使用strstr和test,而是按照预期工作。我在这里遗漏了什么?尝试使用strip_标签而不是strstr。另外,使用strcmp进行字符串比较 $test123 = "<ssl_result_message>APPROVAL</ssl_result_message>"; $value = strstr($tes

回送值部分回送“批准”,就像我预期的那样。但是if语句不起作用。我得到的结果好坏参半。我已经试过了


如果我使用$value=“批准”;它不像test123那样使用strstr和test,而是按照预期工作。我在这里遗漏了什么?

尝试使用strip_标签而不是strstr。另外,使用strcmp进行字符串比较

$test123 = "<ssl_result_message>APPROVAL</ssl_result_message>";

$value = strstr($test123, "<ssl_result_message>"); //gets all text from <ssl_result_message> forward

$value = strstr($value, "</ssl_result_message>", true); //gets all text before </ssl_result_message>

echo $value,"<br>";

if ($value == 'APPROVAL') {
echo 'Transaction is APPROVED!';}


else{
echo 'Transaction is DECLINED';}

根据调试消息,
string(28)“批准”
您的字符串是:

$value = strip_tags($test123);

if (strcmp(trim($value),'APPROVAL')==0) {
   echo 'Transaction is APPROVED!';}
else{
   echo 'Transaction is DECLINED';}
<ssl_result_message>APPROVAL
或者您可以使用解析器:

$value = strip_tags($test123);
关于你当前代码的解释

该函数定义为

返回haystack字符串的一部分,该字符串从针的第一次出现开始,包括针的第一次出现,一直到haystack的结尾

因此,您搜索了
,找到了它并返回了该字符串和剩余的字符串:

$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($test123);
libxml_clear_errors();
$ssl = $dom->getElementsByTagName('ssl_result_message');
$value = $ssl->item(0)->nodeValue;
批准

然后取下
,剩下28个字符的字符串。解析器确实是今后处理此类流程的最佳方式。

我仍在获得批准交易被拒绝我尝试了echo strlen($value),“
”;它仍然显示28。奇怪,但常规的回音显示“批准”,当我双击单词时,我也看不到任何额外的空格。你是被迫使用strstr的吗?为什么不使用preg_匹配或strip_标记。使用strip编辑上述示例_tags@joshrt24. 我工作了30年,你却选择了另一个答案,这真是太糟糕了mins@RinsadAhmed当你看到我的答案有效时,你本可以停下来的。仅仅是改变以匹配我的答案是不可行的…(这不是最好的方法)@user3783243我正在处理他的问题。我没有做你正在做的事情。它仍然像以前一样显示在源代码中,但是if语句现在完全按照我的需要工作。完美而直截了当的回答。不能再要求什么了。非常感谢。我的印象是,当我搜索它时,它会找到整个字符串,并从以下文本开始。然后搜索结束标记只留下“批准”。常规回显正确地显示为“批准”,但在源代码中没有。我将阅读更多关于这个主题的内容。不要使用浏览器进行调试,因为它不会显示真实的输出,或者不要使用渲染的DOM。这是一个演示,但实际上您不应该为此使用
strstr
或任何字符串修改函数。它是一种结构化的语言,因此需要对它进行处理;在我的生产环境中,我发现了同样的问题。但是当我说$value=strip_标签($value);然后它就开始正常工作了。你为什么要编辑你的问题,使其包含答案?这一点都没有帮助。它对寻找答案的人很有帮助。这里让我删除它,下一个人可以筛选所有的评论。
<ssl_result_message>APPROVAL</ssl_result_message>