0

preg_match执行html 源代码时,如何在我的正则表达式中包含换行符?

php

preg_match('/Корица:<\/b><\/td><td>(.*)<\/td>/im', $table[0], $korica);

html(这也是其中的内容$table[0]):

<tr>

            <td><b>Година на издаване:</b></td>

            <td itemprop="datePublished">2009</td>

          </tr>

          <tr>

            <td><b>Корица:</b></td>

            <td>Мека</td>

          </tr>

          <tr>

            <td><b>Език:</b></td>

            <td itemprop="inLanguage">Български</td>

          </tr>





                      <tr>

            <td><b>Средна оценка:</b></td>

            <td>                  Продуктът няма оценка                  </td>

          </tr>

如果我使用preg_match_all,我将在Корица 之后获得所有 html。但我想要的是从 html 中只得到这个Meka 。

4

2 回答 2

1

(.*)将正则表达式中的部分更改为 non-greedy (.*?),甚至更好 - ([^<]*),它匹配所有不是<.

于 2013-07-02T14:47:10.243 回答
1

如果“Meka”总是字母数字,那么这样的事情可能会起作用:

    preg_match('/Корица:<\/b><\/td><td>([a-zA-Z0-9]*)<\/td>/im', $table[0], $korica);

[a-zA-Z0-9]* 应该只匹配字母数字字符。您可能还需要考虑空格,在这种情况下,您应该使用 [a-zA-Z0-9 ]* (注意结束前的空格 ])

于 2013-07-02T14:53:48.187 回答