我有这个字符串:
$str = 'সাংবাদিক<p>দলীয় সূত্রে</p>'
.'<img width="600" src="img/1.jpg">বিলুপ্ত হওয়া পাবনা'
.'বিলুপ্ত হওয়া পাবনা<img width="600" src="img/1.jpg">'
.'বিলুপ্ত হওয়া পাবনা<img width="600" src="img/1.jpg">বিলুপ্ত হওয়া পাবনা'
.'<p>শাহজাদপুর </p>';
我想变成:
$str = '<p>সাংবাদিক</p><p>দলীয় সূত্রে</p>'
.'<img width="600" src="img/1.jpg"><p>বিলুপ্ত হওয়া পাবনা</p>'
.'<p>বিলুপ্ত হওয়া পাবনা</p><img width="600" src="img/1.jpg">'
.'<p>বিলুপ্ত হওয়া পাবনা</p><img width="600" src="img/1.jpg"><p>বিলুপ্ত হওয়া পাবনা</p>'
.'<p>শাহজাদপুর </p>';
我试过正则表达式
$str = preg_replace('/^(?!<p>).*(?!<\/p>)/m', '<p>$0</p>', $str);
但没有做好。请帮忙
答案 0 :(得分:0)
它不是正则表达式的工作,而是DOMDocument的工作。由于您使用的是html部分而不是整个html文档,因此需要将字符串包装到基本的html骨架中,以避免出现自动更正的错误并提供文档编码:
$str = 'সাংবাদিক<p>দলীয় সূত্রে</p>'
.'<img width="600" src="img/1.jpg">বিলুপ্ত হওয়া পাবনা'
.'বিলুপ্ত হওয়া পাবনা<img width="600" src="img/1.jpg">'
.'বিলুপ্ত হওয়া পাবনা<img width="600" src="img/1.jpg">বিলুপ্ত হওয়া পাবনা'
.'<p>শাহজাদপুর </p>';
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML('<html><head><meta charset="UTF-8" /></head><body>' . $str . '</body></html>');
$bodyNode = $dom->getElementsByTagName('body')->item(0);
$result = '';
foreach ($bodyNode->childNodes as $childNode) {
$result .= ($childNode->nodeType === XML_TEXT_NODE)
? '<p>' . $dom->saveHTML($childNode) . '</p>'
: $dom->saveHTML($childNode);
}
echo $result;