我试过学习这个但是无论出于什么原因它都不起作用。
我有以下内容:
在代码中是:
<li><b>
text here:
</b>
5.3 x 6.0 x 40 metres
</li>
这个HTML在一个变量中,我们称之为$ dimensions
我正在尝试使用preg_match_all提取5.3 x 6.0 x 40 metres
,理想情况下提取尺寸和测量但我无法回应结果。它表示尽管匹配的大小为5,但每次都会将数组转换为字符串错误。任何想法是怎么回事?
preg_match_all('/\<li\>([0-9]*\.*[0-9]*)x([0-9]*\.*[0-9]*)x([0-9]*\.*[0-9]*)
\s*([a-zA-Z]*)\<\/li\>/',$dimensions,$matches,PREG_PATTERN_ORDER);
echo sizeof($matches);
echo($matches[0]);
编辑:
正如下面的答案所示:有人说使用var_dump($ matches)来查看数组包含的内容...... 结果我有4个空数组,这引出了下一个问题。我的preg_match_all出了什么问题?
array (size=5)
0 =>
array (size=0)
empty
1 =>
array (size=0)
empty
2 =>
array (size=0)
empty
3 =>
array (size=0)
empty
4 =>
array (size=0)
empty
答案 0 :(得分:0)
尝试使用var_dump来检查数组包含的内容:
<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>
答案 1 :(得分:0)
我建议不要首先使用pregmatch用于此类目的并使用html DOMdocument
并使用XPath查询节点,将结果限制为文本本身然后使用preg_match_all
$content = "<li>
<b>
text here:
</b>
5.3 x 6.0 x 40 metres
</li>";
$doc = new DOMDocument();
$doc->loadHTML($content);
$xp = new DOMXPath($doc);
foreach($xp->query('/html/body/li/text()') as $child){
$dimensionText = $child->textContent;
preg_match_all('!\d+!', $dimensionText, $matches);
print_r($matches);
}
以上将为您提供每个维度的数值
答案 2 :(得分:0)
$dimensions = '<li><b>
text here:
</b>
5.3 x 6.0 x 40 metres
</li>';
$t = simplexml_load_string($dimensions);
echo $t;
它将提取 5.3 x 6.0 x 40米,而不是获得您的值