我是 php 新手并尝试使用 preg_match_all 从 url 中提取数据
问题是匹配项被转换为字符串,我无法单独提取它们
<?php
$pattern = '/<span class="product".*/i';
$string = file_get_contents('http://www.example.com/');
preg_match_all($pattern, $string, $matches);
echo '<b>preg_match_all()</b>';
echo '<pre>';
echo '<br /><b>Products:</b> ', var_dump($matches);
echo '</pre>';
退货
preg_match_all()
Products: array(1) {
[0]=> array(7) {
[0] => string(46) "Product 1"
[1] => string(42) "Product 2"
[2] => string(46) "Product 3"
[3] => string(41) "Product 4"
[4] => string(58) "Product 5"
[5] => string(42) "Product 6"
[6] => string(37) "Product 7"
}
}
我试图一次提取一项(即单独的元素),并尽可能将每一项放入自己的变量中。示例:$product1 = "产品 1"
如果我尝试echo $matches[2];
获取产品 3,则会收到未定义的偏移错误
编辑:
在此线程的帮助下:检索包含某个跨度类的数据
解决方案:
<?php
$html=file_get_contents('http://www.example.com/');
preg_match_all("/\<span class\=\"products\"\>(.*?)\<\/span\>/",$html,$b);
foreach($b as $key => $value) {
$$key = $value;
}
echo $value[4]; // Returns 4th key, or "Product 5"
是的,我在格式化代码方面很糟糕