There are some special needs. An expression is needed to extract N field data in html
For example
<p class="test">
<p class="title">xxx</p>
<p class="xas"></p><pclass="asd"></p>
<p class="pic">xxx</p>
</p>
<p class="test">
<p class="title">xxx</p>
<p class="xas"></p><pclass="asd"></p>
<p class="pic">xxx</p>
</p>
We need to extract the title and pic data from HTML. How to write the regular expression?
The <p class="xas"></p><pclass="asd"></p> in the middle is different content, but this content is useless and there is no need to crawl it
I'm just getting started. Please give me some advice. Thank you
PHP中文网2017-05-16 13:11:53
You don’t have to use regular expressions, there is something called phpquery
我想大声告诉你2017-05-16 13:11:53
let str = `
<p class="test">
<p class="title">xxx</p>
<p class="xas"></p><pclass="asd"></p>
<p class="pic">xxx</p>
</p>
<p class="test">
<p class="title">xxx</p>
<p class="xas"></p><pclass="asd"></p>
<p class="pic">xxx</p>
</p>
`
let results = str.match(/(title|pic)">.*?</g).map(e=>e.replace('">', ':')).map(e=>e.replace('<', ''))
The result is:
// results:
[ 'title:xxx', 'pic:xxx', 'title:xxx', 'pic:xxx' ]
Supplement:
I didn’t see clearly that the question mentioned PHP. I don’t know much about PHP. It’s written in js. You can just take the regular part.
天蓬老师2017-05-16 13:11:53
Just upload the code
$re = '/(title|pic).*?>([^<]+)/';
$str = '<p class="test">
<p class="title">xxx</p>
<p class="xas"></p><pclass="asd"></p>
<p class="pic">xxx</p>
</p>
<p class="test">
<p class="title">xxx</p>
<p class="xas"></p><pclass="asd"></p>
<p class="pic">xxx</p>
</p>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
//演示输出的结果,你可以根据你的需求,从$matches中拿到你想要的xxx部分。
var_dump($matches);
淡淡烟草味2017-05-16 13:11:53
This kind of performance is very poor -.-. It is still reliable to use js to obtain it at the front desk.