想象一下我的字符串是
$str = "<p>paragraph 1</p><p>paragraph 2</p><p>paragraph 3</p>";
我希望得到......
$firstParagraph = "paragraph 1"
这样做的最佳方法是什么?
是否可以轻松地将每个段落分成一个数组?
答案 0 :(得分:4)
$dom = new DOMDocument();
$dom->loadHTML($str);
$xp = new DOMXPath($dom);
$res = $xp->query('//p');
$firstParagraph = $res[0]->nodeValue;
答案 1 :(得分:1)
你问两件事。但是
$array = preg_split('#</p><p>|<p>|</p>#i', $string, -1, PREG_SPLIT_NO_EMPTY)
你可以将段落拆分成一个数组,$ string是带有段落的字符串。
要仅获取第一段,请使用:
preg_match('#^<p>(.*?)</p>#i', $string, $matches)
$ matches将包含您想要的内容。这比以前的正则表达式更有效,更快。我不应该提到面向对象的xml解析器的解决方案,如果我见过它,那就是完全过度杀伤。
答案 2 :(得分:1)
我正在快速打字,但不会:
$str = "<p>paragraph 1</p><p>paragraph 2</p><p>paragraph 3</p>";
preg_match('/<p>(.*?)<\/p>/i', $str, $paragraphs);
echo $paragraphs[0]; // Paragraph 1
比其他解决方案更有效率?