PHP变量不相等

PHP变量不相等,php,Php,虽然我熟悉一些其他语言,但我对使用PHP进行编码还是比较陌生,所以我决定稍微玩玩一下 基本上,我一直在玩regex和Web scraping,我正在编写一个脚本来解析网站上的一些信息。我得到的信息很好,但当我尝试将其中一个数组中的值与字符串进行比较时,即使这些值显示相同的数据类型,结果也不相等。下面是一个我正在使用的示例 在这里,我只是试图通过从站点检索一组值,然后将它们移动到1d数组来比较我的值。假设数组[0]=“value”的值应该等于$str。我已经用gettype()检查过,$tmp和$

虽然我熟悉一些其他语言,但我对使用PHP进行编码还是比较陌生,所以我决定稍微玩玩一下

基本上,我一直在玩regex和Web scraping,我正在编写一个脚本来解析网站上的一些信息。我得到的信息很好,但当我尝试将其中一个数组中的值与字符串进行比较时,即使这些值显示相同的数据类型,结果也不相等。下面是一个我正在使用的示例

在这里,我只是试图通过从站点检索一组值,然后将它们移动到1d数组来比较我的值。假设数组[0]=“value”的值应该等于$str。我已经用gettype()检查过,$tmp和$str都是字符串,但它们没有注册为相等。我也尝试过在数组中使用current()值(实际上这对我来说更好),但都是一样的

我实际上需要做的是在数组中找到一个值并将其与$str进行比较。如果它匹配,我需要将一个变量设置为数组中的前一个值

$html = file_get_contents("http://www.site.com");    
$str = "Value";

preg_match_all ('/<td class=\"name\">(.*?)<\/td>/s', $html, $return, PREG_PATTERN_ORDER);

           for ($ii = 0; $ii < count($return[0]); $ii++) {
                 $array[$ii] = $return[0][$ii];
           }


            $tmp = $array[0];

            if ($tmp == $str) {
              echo "yes";
            }
$html=文件获取内容(“http://www.site.com");    
$str=“Value”;
preg_match_all(“/(.*?)/s',$html,$return,preg_PATTERN_ORDER);
对于($ii=0;$ii
$tmp
将始终包括您正在使用的代码中的
..
标记,您可能需要替换这些标记

for ($ii = 0; $ii < count($return[0]); $ii++) {
    //Matches of whole pattern (not just 1st group)
    $array[$ii] = $return[0][$ii];
}

因为也不需要for循环…

结果处理有点不方便

 preg_match_all ('#<td class="name">(.*?)</td>#s', $html, $return);
然后,您可能希望比较结果列表中的所有条目,而不仅仅是第一条:

 foreach ($array as $i=>$tmp) {
     if ($tmp == $str) {
          echo "yes";
     }
 }

要获得上一个(?)值,只需访问
$array[$i-1]
(代替上面的
echo

您可以尝试trimmimg$tmp trim($tmp)-其中可能有换行符。。。也可能有htmlentitied的东西(尝试右键单击>查看源代码并查看$tmp与$str)不应该在循环中完成吗?你说的“我需要将一个变量设置为数组中的前一个值”是什么意思?添加
echo“'$tmp'=='$str'以上
if($tmp==$str){
以查看正在比较的内容以及是否存在任何前导/尾随space@Crayon暴力-谢谢,我尝试修剪来自数组的值,但没有效果。我尝试修剪两个变量,结果都奏效了…我想$str的默认值需要修剪?无论如何,我的检查得到了一个正值。@Nabab-loop是用来填充数组的,但剩下的只是一个简单的检查,以找出它们不正确比较的原因。我的另一个语句意味着,当我在数组中标识一个特定值(比如在第5个索引处)时,我需要获取上一个值(在索引4处)将其设置为变量。谢谢。我尝试了该方法来访问数组值,但一直出现“undefined offset”错误。这就是为什么我还要研究current()和prev()方法。@jb11:这可能意味着
-1
,您的假设可能是错误的。比较值位于第一个表单元格中,并且没有前面的表单元格。您应该显示一个数据表的示例来澄清您的问题。除了上面填充数组时,我可以使用arra直接访问值y[index]。我知道数组已填充,但当我使用for循环并将数组[$I]与字符串变量进行比较时,当我尝试将新变量设置为数组[$I-1]时,我得到了错误。我不太确定如何修复它,因为我刚刚重写了代码,但现在它正在工作。不过,感谢所有的输入。它还应该修复您的错误:P
 $array = $return[1];
 foreach ($array as $i=>$tmp) {
     if ($tmp == $str) {
          echo "yes";
     }
 }