[英]PHP using regex to convert markdown similar syntax into image HTML tag
[英]Failing Regex Syntax for html in PHP
我有点情况。 正在工作的站点分为移动站点和主站点两部分。 它们都从同一数据库/表中获取内容。 它是一个博客网站。 当管理员使用文本编辑器(CKEditor)创建包含图像的内容时,会将style
属性附加到生成的img
标签上。 所以输出看起来像这样。
<img alt="some content" src="some location" style="width:520px; height:600px;" />
这在主站点上效果很好,但在移动站点上,图像的缩放和拉伸效果很差。 我有一个缩略图脚本可以解决这个问题,但是我想要一种在页面加载之前获取src
属性的方法以及一种删除style
属性的方法。
我使用正则表达式做到这一点。
$str=$blog_post_column_from_database
$pattern=array ('#\<img alt="(.*?)" src="(.*)" style="(.*?)" /> #' );
$replacement=array ( '<img src="$my_thumbnailer_here.php?src=\\2" width="100%" />' );
$a=(string)$str; //converts text to string to avoid code lines from executing
return preg_replace($pattern,$replacement,$a);
请问我在做什么错?..正则表达式不是我的强项,谢谢。
...如评论中已经建议的那样,使用PHP DOMDocument会更好:
这样的事情应该可以解决问题:
例如:http: //3v4l.org/Gv4dp
//get new domdoc instance
$dom=new DOMDocument();
//load your html
$dom->loadHTML($your_html);
//get all images
$imgs = $dom->getElementsByTagName("img");
//iterate over those
foreach($imgs as $img){
//remove style attribute
$img->removeAttribute('style');
//prefix src attribute with scriptname
$img->setAttribute( 'src' , 'thumbnail.php?img=' . $img->getAttribute('src') );
}
//output modified html
echo $dom->saveHTML();
您可能要删除将<doctype>
另存为html时创建的<doctype>
, <html>
和<body>
元素,方法是将最后一行替换为:
echo preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>'), '', $dom->saveHTML()));
尝试下一个正则表达式
$pattern=array ('#<img alt="(.*?)" src="(.*)" style="(.*?)" />#' );
从开头删除/,从结尾删除空格。
为了正确工作,您应该首先找到所有img标签,然后再进行更改。
您的正则表达式将无法使用,缺少属性标记alt或属性处于其他顺序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.