php - 获取两个HTML元素之间的字符串

时间:2015-08-13 19:04:28

标签: php string

我有以下功能:

function get_string_between($string, $start, $end){
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
}  

我将以下信息传递给此函数:

$result = scraped HTML page;
$name = get_string_between($result, '<div class="model ww"> ',' </div>');
$name= strtok($name, "\n");

我期待以下结果:

$name = 'XM1014 | Bone Machine (Well-Worn)';

整个部分如下:

<div class="modal ww"> XM1014 | Bone Machine (Well-Worn) </div>

2 个答案:

答案 0 :(得分:1)

尝试以下代码

    function get_string_between($string, $start, $end){
        $ar=array();
        $ar=explode($start,$string);
        $ar1=explode($end,$ar[0]);
        return implode("",$ar1);        
    }   
   $result = "<div class='modal ww'> XM1014 | Bone Machine (Well-Worn) </div>";
   $text_result=get_string_between($result, '<div class="model ww"> ',' </div>');
   print_r($text_result);

使用简单的html dom解析html。 这是简短的例子

 $html = new simple_html_dom();

// Load HTML from a string
$html->load('<html><body>
<div>test1</div>
<div>test2</div>
</body></html>');

foreach($html->find('div') as $element)
       print_r($element->plaintext);

要处理上面的代码,您需要包含this文件 所以你可以获得所有div之间的内容。 您可以阅读更多here

最后你的功能将是

function get_string_between($string){
        $result=array();
        $html = new simple_html_dom();
        $html->load($string);

        foreach($html->find('div') as $element)
            array_push($result,$element->plaintext);    

        return $result;
 }   
       $result = "<div class='modal ww'> XM1014 | Bone Machine (Well-Worn) </div>";
       $text_result=get_string_between($result);
       print_r($text_result);

希望有所帮助:)

答案 1 :(得分:0)

您当然可以使用正则表达式,但有些库可以更快,更轻松地完成工作。尝试使用HTML dom解析器,或phquery,它是php中jquery lib的一个实现。它也是available for Composer。所以如果你熟悉jquery语法,你会发现它非常整洁。

使用此获取您需要的html: $ html = pq(&#39; .modal.ww&#39;) - &gt; html();