【发布时间】:2011-08-23 02:32:29
【问题描述】:
我曾经应用过这个php preg_match:
<?php preg_match( '!<div class="thumblock ">(.*)</div>!si' , wp_gdsr_render_article_thumbs(0, false, "", 0, "", false) , $n );
$thumbs_number = strip_tags( $n[1] ); ?>
提取.rating-result span 标签之间的数字(在本例中为 2):
<div class="thumblock">
<span class="rating-result">2</span>
<div class="ratingtext">
<div id="gdsr_thumb_124_a_up" class="gdt-size-20 gdthumb gdup">
<div class="gdt-starrating"></div>
</div>
<div id="gdsr_thumb_124_a_dw" class="gdt-size-20 gdthumb gddw">
<div class="gdt-starrating"></div>
</div>
</div>
<div class="raterclear"></div>
</div>
现在,我修改了输出(我添加了一个围绕.rating-result span 标签的额外 div):
<div class="thumblock">
<div id="gdsr_thumb_text_137_a" class="gdt-size-20 voted inactive gdthumbtext">
<span class="rating-result">2</span>
</div>
<div class="ratingtext">
<div id="gdsr_thumb_137_a_up" class="gdt-size-20 gdthumb gdup">
<div class="gdt-starrating"></div>
</div>
<div id="gdsr_thumb_137_a_dw" class="gdt-size-20 gdthumb gddw">
<div class="gdt-starrating"></div>
</div>
</div>
<div class="raterclear"></div>
</div>
对第一个$thumbs_number 执行var_dump 输出:string(2) "+1"
执行var_dump 到第二个$thumbs_number 输出:string(2) "+1"
但是我使用变量$thumbs_number的函数已经不起作用了(get_rating_class();被放在一个div的类中,根据拇指的数量添加一个类):
function get_rating_class($thumbs_number) {
if ($thumbs_number < 0) return ' bad';
if ($thumbs_number < 2) return ' average';
if ($thumbs_number < 4) return ' good';
return ' excellent';
}
function rating_class($thumbs_number) {
echo get_rating_class($thumbs_number);
}
这完全一样,但看起来像
我应该如何修改 preg_match 以使其像以前一样提取该数字?
【问题讨论】:
-
那你为什么不直接添加 span 占位符,或者直接找那个占位符呢?你也意识到它会更简单,例如
qp($html)->find(".thumblock .rating-result").text()(...) - 虽然尚不清楚哪种方法适合您的情况。
标签: php preg-match