我需要<p>
在字符串中找到标签。然后我想存储来自(包括)的字符串
标记到另一个变量中。
例如我有字符串名称 firstString;
第一个字符串 ="<div id='tab-1'><p>This is first string</p></div>"
我想要第二个字符串
第二个字符串 ="<p>This is first string</p>"
我只需要第一个<p>
标签。
我需要<p>
在字符串中找到标签。然后我想存储来自(包括)的字符串
标记到另一个变量中。
例如我有字符串名称 firstString;
第一个字符串 ="<div id='tab-1'><p>This is first string</p></div>"
我想要第二个字符串
第二个字符串 ="<p>This is first string</p>"
我只需要第一个<p>
标签。
DOMDocument::loadHTML
. 也许不是最快的选择,但应该很简单。
$dom = new DOMDocument();
$dom->loadHTML($str);
$xp = new DOMXPath($dom);
$res = $xp->query('//p');
$firstParagraph = $res[0]->nodeValue;
您可以使用简单的正则表达式来获取此子字符串。
$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 这样的专用系统。
/* 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);
}