繁体   English   中英

正则表达式匹配特定的HTML字符串,其中包含任意数量的空格

[英]regex to match a specific HTML string with any number of spaces inside it

我有这样的几行代码

<p> &lt;inset&gt;</p>

如果字符串在开头<p>标签和其余部分之间可能有任意数量的空格或制表符(或没有空格)。 我需要更换这些,但我不能让它工作。

我以为这会做到,但它不起作用:

<p>[ \t]+&lt;inset&gt;</p>

尝试这个:

$html = preg_replace('#(<p>)\s+(&lt;inset&gt;</p>)#', '$1$2', $html);

如果你想要HTML的真正文本修剪,包括你可以遇到的所有内容,例如权利,评论,子元素和所有这些东西,你可以使用TextRangeTrimmerTextRange

$htmlFragment = '<p> &lt;inset&gt;</p>';

$dom = new DOMDocument();
$dom->loadHTML($htmlFragment);
$parent = $dom->getElementsByTagName('body')->item(0);
if (!$parent)
{
    throw new Exception('Parent element not found.');
}

$range = new TextRange($parent);
$trimmer = new TextRangeTrimmer($range);
$trimmer->ltrim();

// inner HTML (PHP >= 5.3.6)
foreach($parent->childNodes as $node)
{
    echo $dom->saveHTML($node);
}

输出:

<p>&lt;inset&gt;</p>

我在两个课程中都有一个要点: https//gist.github.com/1894360/ (codepad viper已关闭)。

请参阅相关问题/答案:

尝试将HTML字符串加载到DOM树中,然后trim树中的所有文本值。

http://php.net/domdocument.loadhtml

http://php.net/trim

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM