我如何使用PHP的preg_replace()
仅返回以下字符串中<h1>
内的值(它是在名为$html
的变量中加载的HTML文本):
<h1>I'm Header</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque tincidunt porttitor magna, quis molestie augue sagittis quis.</p>
<p>Pellentesque tincidunt porttitor magna, quis molestie augue sagittis quis. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
我试过这个:preg_replace('#<h1>([.*])</h1>.*#', '$1', $html)
,但无济于事。我正确地说这个吗?是否有一个更好的PHP函数,我应该使用而不是preg_replace
?
答案 0 :(得分:4)
([.*])
表示dot OR astersk
您需要的是(.*?)
,这意味着任何数量的任何字符都不合适
或
([^<]*)
- 这意味着任何数量的任何字符,但不是<
答案 1 :(得分:4)
以下是使用preg_replace
:
$header = preg_replace('/<h1>(.*)<\/h1>.*/iU', '$1', $html);
您还可以使用preg_match
:
$matches = array();
preg_match('/<h1>(.*)</h1>.*/iU', $html, $matches);
print_r($matches);