我有两个文件:
1: template.html(utf-8编码)内容:
<tag>
<output>
</output>
</tag>
2:,第二个文件是parser.php(utf-8编码)内容:
$fileContent = (file_get_contents('template.html'));
echo 'Pos #1: <b>'.$pos1 = mb_strpos($fileContent, '<'); echo '</b><br />';
echo 'Pos #2: <b>'.$pos2 = mb_strpos($fileContent, '>'); echo '</b><br />';
echo 'Substring by Pos1 & Pos2: <b>'.htmlentities(substr($fileContent, $pos1, $pos2)).'</b>';
我尝试解析标签,我需要知道它们的正确位置..当我使用substr我注意到问题输出是:
Pos #1: 0
Pos #2: 10
Substring by Pos1 & Pos2: <tag
我需要正确的方法..结果应该是:
Pos #1: 0
Pos #2: 11
Substring by Pos1 & Pos2: <tag>
答案 0 :(得分:0)
提取子字符串需要start
,这是一个位置,而length
不是位置。
您可以通过以下方式获得长度:
$length = $pos2 - $pos1 + 1;
此外,您正在处理一个unicode字符串并且清楚地使用mb_strpos
,但您仍然使用substr
来提取子字符串。您应该使用mb_substr
。
<强> mb_substr()强>
根据字符数执行多字节安全substr()操作。位置从str的开头计算。第一个字符的位置是0.第二个字符的位置是1,依此类推。