我想替换这一行:
<img width="600" height="256" alt="javascript00" src="http://localhost/img/test.png" title="javascript00" class="aligncenter size-full wp-image-1973">
有了这个:
<p align="center"><img width="600" height="256" alt="javascript00" src="http://localhost/img/test.png" title="javascript00"></p>
使用简单的正则表达式。它包括删除图像类并仅在img类包含aligncenter时添加<p align="center">
:)
感谢您的帮助! 圣诞快乐:)
解决方案:
$result = preg_replace('#<img([^>]*?)?\s+class="[^"]*aligncenter[^"]*"\s*([^>]*?)>#', '<p align="center"><img$1 $2></p>', $data);
答案 0 :(得分:2)
这应该有效,尽管不建议用正则表达式解析和操作HTML。
<?php
$in = '<img width="600" height="256" alt="javascript00" src="http://localhost/img/test.png" title="javascript00" class="aligncenter size-full wp-image-1973">';
$out = preg_replace(
'@<img( [^>]*?)\s*class="[^"]*"([^>]*?)>@',
'<p align="center"><img $1$2></p>',
$in
);
// if you need the image's class to be replaced with one class:
$out = preg_replace(
'@<img( [^*]+?)\s*class="[^"]*"([^>]*?)>@',
'<p align="center"><img class="aligncenter" $1$2></p>',
$in
);
这里有other questions and answers处理你为什么不应该使用正则表达式来解析和操作HTML的问题(在SO允许你创建帐户之前应该要求阅读)。
假设您正在处理HTML,您正在从无法控制的外部源检索,您将使用DOMDocument的loadHTML方法并抑制错误(如果您无法控制标记,这将处理格式错误的HTML,但它甚至在构建文档时也会发出错误,所以请使用@)
$dom = new DOMDocument;
// supress errors because DOMDocument will actually parse a malformed document
// even when it emits errors. this is something that is wrong with PHP.
@$dom->loadHTML('<img src="foo" class="bar">');
$xp = new DOMXPath($dom);
$node = $xp->query('body/img')->item(0);
$node->removeAttribute('class');
echo $dom->saveXML($node).PHP_EOL;
答案 1 :(得分:0)
如果您只需要img标签,可以使用此正则表达式:
$data = '<img width="600" height="256" alt="javascript00" src="http://localhost/img/test.png" title="javascript00" class="aligncenter size-full wp-image-1973">';
$result = preg_replace('#<img( [^>]*?)\s+class="[^"]*"\s*([^>]*?)>#', '<p align="center"><img $1$2></p>', $data);
echo $result;