PHP子字符串开始位置不工作


php substr start position not working

php函数substr

有一个问题

假设这个字符串来自xml文件:

$str = '<?xml version="1.0" encoding="utf-8"?><bookstore id="book-1"><languages default="en">';

我要做的是从这个字符串中提取第二个标签,标签

<bookstore id="book-1">

我所做的是:

首先,我得到了以第二个标签开头的字符串,像这样:

$newStr = substr($str, strpos($str, '<bookstore '));
我的变量$newStr现在应该是:
$newStr = '<bookstore id="book-1"><languages default="en">';
然后,使用$newStr变量,我试图得到我想要的标签(第二个标签,现在是我的$newStr变量的第一个标签),像这样:
$wantedTag = substr($newStr, 0, strpos($newStr, '>');

但是我遇到的问题是,当我这样做时,没有返回(或者可能返回空字符串)。但是如果我用1替换0,像这样:

$wantedTag = substr($newStr, 1, strpos($newStr, '>');

我得到了第二个标签,但是没有初始的'<':

$wantedTag = 'bookstore id="book-1">';

这是完全有意义的,因为字符'b'在位置1。为什么我没有得到任何东西(或空字符串),当我把substr函数的开始位置为0?任何帮助都将非常感激。

请不要告诉我使用任何XML解析器,比如SimpleXML之类的,这与XML解析无关,它只是基本的字符串操作技术

我想你正在看结果在你的浏览器?浏览器当然会解释任何HTML/XML标记,所以除非标记有一些内容,否则您不会看到任何内容。字符串处理本身似乎工作良好,参见http://codepad.org/xkU86CJP。