請教個關於php正規表示式的問題。 。 。
迷茫
迷茫 2017-05-16 13:09:53
0
4
451

有點特殊需求,需要一條表達式取出html中N個字段資料
例如

<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>

需要在html中取出title以及pic的資料 正規該怎麼寫呢?
中間的

為不同的內容 但這些內容沒什麼用 沒必要抓取
剛入門 請教一下 謝謝

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(4)
Ty80

不一定要用正規則,有東西叫做phpquery

我想大声告诉你
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('<', ''))

結果是:

// results:
[ 'title:xxx', 'pic:xxx', 'title:xxx', 'pic:xxx' ]

補充:
沒看清題目說PHP,不太懂PHP,用js寫的,你可以只拿正規那塊。

Peter_Zhu

直接上程式碼了

$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);
淡淡烟草味

這種性能很差的-.-.還是前台用js獲取的可靠。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板