为了明确说明,我完全同意网站管理员执行此操作,直到他们构建API.
我想要做的是,比如说,在网站的某个特定部分找到的数字或任何数据,尽管它的位置可以改变.
什么,我想这样做,如果我的HTML存储在通过的file_get_contents一个变量,想找个在那里说的来源某处的一个例子"<p>User status: Online.</p>"; 我需要将文本存储在变量之间"status: "和".</p>"变量之间,只知道这两个字符串才能找到它,但也知道只有一种可能的情况,那两个文本在同一行中
编辑:我似乎忘记了最重要的部分.好吧,问题是如何做我刚刚描述的内容,如果你有很多文本,我怎样才能找到一段文本和另一段文本之间的内容,并将其存储在变量中?
有几种方法可以抓取网站,一种是使用CSS 选择器,另一种是使用XPath,它们都从 DOM 中选择元素。
由于我看不到网页的完整 HTML,因此我很难确定哪种方法更适合您。还有另一种选择可能会令人皱眉,但在这种情况下它可能会起作用。
您可以使用Regex(正则表达式)来查找字符,我不是最擅长正则表达式,但这里有一些示例代码,说明了它的工作原理:
<?php
$subject = "<html><body><p>Some User</p><p>User status: Online.</p></body></html>";
$pattern = '/User status: (.*)\<\/p\>/';
preg_match($pattern, $subject, $matches);
print_r($matches);
?>
Run Code Online (Sandbox Code Playgroud)
示例输出:
Array
(
[0] => User status: Online.</p>
[1] => Online.
)
Run Code Online (Sandbox Code Playgroud)
基本上,上面的正则表达式所做的是匹配模式,在本例中,它查找字符串“User status:”,然后匹配所有字符 (.*) 直到结束段落标记(转义)。
这是仅返回“在线”而没有句点的模式,不确定是否所有状态都以句点结束,但它看起来像这样:
'/User status: (.*)\.\<\/p\>/'
Run Code Online (Sandbox Code Playgroud)