我将一个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ä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;
}
答案 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)