PHP:如何找到

时间:2013-06-28 09:12:48

标签: php html strpos

我将一个html代码数组传递给php函数,目的是提取并返回它的一个子集。

以下是传入数据的部分示例:

[0] => <div class="positionIs" style="float:right;width:181px;">
[1] => <table class="datab" style="width:100%;">
[2] => <tr>
[3] => <th colspan="2" style="padding:4px;">Position ist...
[4] => </th>
[5] => </tr>
[6] => <tr class="hell">  
[7] => <td style="text-align:left;">...tats&auml;chliche Position
[8] => </td>
[9] => <td style="font-weight:bold;padding:2px;">
[10] => <div style="text-align: center;border:1px solid black;padding:1px;height:1.4em;width:1.4em;background-color:#ffffff;">
[11] => </div>

要返回,例如第一个表行([2] - [5])在我看来,我需要测试“

我已经尝试用strpos来做,但它只是不能像我期望的那样工作。这可能是因为“&lt;”的存在和字符串中的“/”。我试过用反斜杠逃避它但是也没用。我该如何测试这些字符串?

如下所述,这是我的函数代码:

$str_out = '';
$tracker = 0;
$start = '<tr';
$end = '/tr';
for ($i = 0, $ii = count($arr_in); $i < $ii; $i++)
{
    $str_out .= $arr_in[$i];
    if (strpos($arr_in[$i], $start) === true)
    {
        $tracker++;
    }
    if (strpos($arr_in[$i], $end) === true)
    {
        $tracker--;
    }
    if (!$tracker) break;
}

1 个答案:

答案 0 :(得分:1)

strpos不会返回TRUE。它将返回找到'needle'的第一个字符的位置,如果尚未找到,则返回FALSE。有关详细信息,请查看此处的手册:http://php.net/manual/en/function.strpos.php

所以不要使用

if (strpos($arr_in[$i], $start) === true)

你可以像这样检查非假:

if (strpos($arr_in[$i], $start) !== false)