1

我需要<p>在字符串中找到标签。然后我想存储来自(包括)的字符串

标记到另一个变量中。

例如我有字符串名称 firstString;

第一个字符串 ="<div id='tab-1'><p>This is first string</p></div>"

我想要第二个字符串

第二个字符串 ="<p>This is first string</p>"

我只需要第一个<p>标签。

4

3 回答 3

6

DOMDocument::loadHTML. 也许不是最快的选择,但应该很简单。

$dom = new DOMDocument();
$dom->loadHTML($str);

$xp = new DOMXPath($dom);

$res = $xp->query('//p');

$firstParagraph = $res[0]->nodeValue;
于 2012-09-09T13:28:34.963 回答
0

您可以使用简单的正则表达式来获取此子字符串。

$firstString = "<div id='tab-1'><p>This is first string</p></div>";
preg_match("#(<p>.+</p>)#", $firstString, $out);
echo $out[1];

如果您更准确地知道字符串是如何形成的,或者如果您希望提取多个子字符串,您可以使用其他方法preg_match_all来代替。

如果这是为了从 HTML抓取一些东西,那么你应该使用像 DOMDocument 这样的专用系统。

于 2012-09-09T13:28:30.017 回答
0
/* find opening tag */
$strPosBegin = strstr($firstString,"<p>");

if $strPosBegin != 0 {

    /* find position of closing tag */
    $strPosEnd = strstr($firstString,"</p>");

    /* adjust for the length of closing tag */
    $strPosEnd = $strPosEnd + 3;

    /* calculate difference, but need to add 1 */
    $strLength = $strPosEnd - $strPosBegin + 1;

     /* use substr to lift your search string out of $firstString
    $secondString = substr($firstString, $strPosBegin, $strLength);
}
于 2012-09-09T13:43:16.403 回答