Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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
Can';我不能让正则表达式在PHP中工作。只输出单词数组_Php - Fatal编程技术网

Can';我不能让正则表达式在PHP中工作。只输出单词数组

Can';我不能让正则表达式在PHP中工作。只输出单词数组,php,Php,我很难在PHP中使用regexp。它应该得到网页上标签之间的字符串,但当我尝试回显它时,我得到的只是单词数组 这是我正在使用regexp的文本。它是作为字符串下载的网页的一部分 <title> HTC Desire S </title> HTC欲望S 这是我用于正则表达式的代码 while(!feof($list_of_phones)) { $phone = fgets($list_of_phones); $info = file_get_

我很难在PHP中使用regexp。它应该得到网页上标签之间的字符串,但当我尝试回显它时,我得到的只是单词数组

这是我正在使用regexp的文本。它是作为字符串下载的网页的一部分

<title>
HTC  Desire S
</title>

HTC欲望S
这是我用于正则表达式的代码

while(!feof($list_of_phones))
{
      $phone = fgets($list_of_phones);
      $info = file_get_contents($phone);
      preg_match_all("/\/<title>(.*)<\/title>/", $info, $title, PREG_OFFSET_CAPTURE);
      echo $title[0];
}
while(!feof($list_of_phone))
{
$phone=fgets(电话列表);
$info=文件获取内容($phone);
preg\u match\u all(“/\/(.*)/”,$info,$title,preg\u OFFSET\u CAPTURE);
echo$title[0];
}
请仔细阅读本手册。第三个参数由多维数组填充。您可以使用来检查变量。

请仔细阅读本手册。第三个参数由多维数组填充。您可以使用检查变量。

$matches
始终是一个多维数组(通常为2级)。设置
PREG\u OFFSET\u CAPTURE
-标志时,结果也更深一层

预偏移捕获 如果传递此标志,则对于发生的每个匹配,也将返回附加字符串偏移量。请注意,这会将匹配的值更改为数组,其中每个元素都是一个数组,由偏移量0处的匹配字符串及其偏移量1处的主题字符串组成

对于进一步的调试:不要使用
echo
,而是使用
var\u dump()
,或
print\u r()
。这将为您提供比echo更多的信息

然后使用这个正则表达式

/\/<title>(.*)<\/title>/
/\/(*)/
据我所知,这也要求在
之前有一个
/
(由
\/
指定)。我不认为这是你想要的。(当我们在这里选择不同的分隔符时,它更明显:
~/(.*)~

$matches
始终是一个多维数组(通常为2级)。设置
PREG\u OFFSET\u CAPTURE
-标志时,结果也更深一层

预偏移捕获 如果传递此标志,则对于发生的每个匹配,也将返回附加字符串偏移量。请注意,这会将匹配的值更改为数组,其中每个元素都是一个数组,由偏移量0处的匹配字符串及其偏移量1处的主题字符串组成

对于进一步的调试:不要使用
echo
,而是使用
var\u dump()
,或
print\u r()
。这将为您提供比echo更多的信息

然后使用这个正则表达式

/\/<title>(.*)<\/title>/
/\/(*)/

据我所知,这也要求在
之前有一个
/
(由
\/
指定)。我不认为这是你想要的。(当我们在这里选择不同的分隔符时,它更明显:
~/(.*)~

第一个问题:您的正则表达式中似乎有一个额外的斜杠:

/\/<title>(.*)<\/title>/
 ^^
/\/(*)/
^^
我不知道你为什么会这样,但我认为应该是这样的:

/<title>(.*)<\/title>/
/(*)/
第二个问题:即使你做对了,
$title[0]
仍然是一个数组;您需要
$title[0][0]
来获取完整的
内容
字符串,需要
$title[1][0]
来获取
标记内的文本


希望有帮助。

第一个问题:您的正则表达式中似乎有一个额外的斜杠:

/\/<title>(.*)<\/title>/
 ^^
/\/(*)/
^^
我不知道你为什么会这样,但我认为应该是这样的:

/<title>(.*)<\/title>/
/(*)/
第二个问题:即使你做对了,
$title[0]
仍然是一个数组;您需要
$title[0][0]
来获取完整的
内容
字符串,需要
$title[1][0]
来获取
标记内的文本


希望对您有所帮助。

首先,您的正则表达式中似乎有一个错误,即初始的
\/


其次,
$title[0]
将不包含您要查找的内容。将
print\r
(或类似)应用于
$title
,您将看到哪些片段是相关的。

首先,正则表达式中似乎有一个错误,即初始的
\/


其次,
$title[0]
将不包含您要查找的内容。将
print\u r
(或类似)应用于
$title
,您将看到哪些片段是相关的。

尝试
preg\u match
而不是
preg\u match\u all
。看起来您正在尝试用正则表达式解析HTML。查看这个问题了解为什么这是一个坏主意:您是否知道有更简单的方法可以通过使用类从html/xml文档中获取内容,如?尝试
preg\u match
而不是
preg\u match\u all
。看起来您正在尝试用正则表达式解析html。查看这个问题了解为什么这是一个坏主意:您是否知道有更简单的方法可以通过使用以下类从html/xml文档中获取内容?