Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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
Php 返回行,包括找到的字符串_Php_Html_Line Numbers - Fatal编程技术网

Php 返回行,包括找到的字符串

Php 返回行,包括找到的字符串,php,html,line-numbers,Php,Html,Line Numbers,假设我有一个HTML文档:(下面的摘录和行号) 我想找到找到字符串的行号(假设该字符串在文档中只出现一次),并返回该行中找到的全部内容。比如说, getLine('myDiv'); //returns <div id="myDiv"> getLine('class="mySpan"'); //returns <span class="mySpan">Some Text</span> getLine('myDiv')//返回 getLine('class=“m

假设我有一个HTML文档:(下面的摘录和行号)

我想找到找到字符串的行号(假设该字符串在文档中只出现一次),并返回该行中找到的全部内容。比如说,

getLine('myDiv'); //returns <div id="myDiv">
getLine('class="mySpan"'); //returns <span class="mySpan">Some Text</span>
getLine('myDiv')//返回
getLine('class=“mySpan”)//返回一些文本

我该怎么做?谢谢大家!

理解
line
作为由换行符('\n')分隔的字符集,可以按如下方式分解$html字符串:

$lines = explode("\n", $html); 
然后在保持行计数的同时迭代每行:

$lineno = 1;
foreach ($lines as $line) {
    if (strstr($line, $what_to_find) !== FALSE) {
        //Match
        echo "Line $lineno: $line\n";
    }
    $lineno++;
}

有没有比foreach更好的方法来处理几千行的数据?您可以首先使用strpos($html,$pinder)获取第一次出现的指针的位置,然后来回扫描以找到该行的开始和结束位置(即查找\n)。然而,它值得吗?例如,您是否尝试过“foreach”对10k行的文件执行得不好?我知道它将在
500行
1000行
之间,因此我将只对
循环使用
,从500行开始。谢谢!:-)
$lines = explode("\n", $html); 
$lineno = 1;
foreach ($lines as $line) {
    if (strstr($line, $what_to_find) !== FALSE) {
        //Match
        echo "Line $lineno: $line\n";
    }
    $lineno++;
}