我有以下功能:
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>
答案 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();