Can';我不能让正则表达式在PHP中工作。只输出单词数组
我很难在PHP中使用regexp。它应该得到网页上标签之间的字符串,但当我尝试回显它时,我得到的只是单词数组 这是我正在使用regexp的文本。它是作为字符串下载的网页的一部分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_
<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文档中获取内容?