Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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 substr起始位置不工作_Php_String - Fatal编程技术网

php substr起始位置不工作

php substr起始位置不工作,php,string,Php,String,我对php函数有一个问题 假设这个字符串来自一个xml文件: $str = '<?xml version="1.0" encoding="utf-8"?><bookstore id="book-1"><languages default="en">'; 但我遇到的问题是,当我执行此操作时,不会返回任何内容(或者可能返回空字符串)。但如果我将0替换为1,如下所示: $wantedTag = substr($newStr, 1, strpos($newStr,

我对php函数有一个问题

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

$str = '<?xml version="1.0" encoding="utf-8"?><bookstore id="book-1"><languages default="en">';
但我遇到的问题是,当我执行此操作时,不会返回任何内容(或者可能返回空字符串)。但如果我将0替换为1,如下所示:

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

我得到了第二个标签,但没有首字母“,我想你正在浏览器中查看结果?浏览器当然会解释任何HTML/XML标记,因此除非标记包含某些内容,否则您将看不到任何内容。字符串处理本身似乎工作正常,请参见。

虽然它可能是字符串操作,但您的示例不适合。使用XML解析器可以更好地解决这一问题,PHP有一些XML解析器。
…这只是基本的字符串操作技术。
我认为这不是使用正确的工具来完成的。请使用XML解析器大声呼喊!无法复制
substr($newStr,0,strpos($newStr,“>”)
返回标记,从<开始直到(但不包括)>。我知道用XML解析器解决这个问题会更好,但没人能告诉我为什么会得到空字符串?为什么我不能得到“好的,当你在$wantedTag=substr($newStr,0,strpos($newStr,“>”)+1中添加+1时,我看到了这一点”;它起作用了。但是我真的不明白+1有什么区别(如果没有+1,它就不起作用了。我明白了,+1实际上让它在$want标记中使用结束符。如果没有它,结束符将在字符串中丢失。另外,我注意到在Firefox中代码的行为正确,而在Chrome中它什么都不做。这很奇怪
$newStr = substr($str, strpos($str, '<bookstore '));
$newStr = '<bookstore id="book-1"><languages default="en">';
$wantedTag = substr($newStr, 0, strpos($newStr, '>');
$wantedTag = substr($newStr, 1, strpos($newStr, '>');
$wantedTag = 'bookstore id="book-1">';