所以,我正在尝试将数据库从Textpattern CMS迁移到更通用的东西。拉入图像的文章中有一些特定于文本模式的命令。我想把它们变成通用的HTML图像链接。目前,它们在sql文件中看起来像这样:
<txp:upm_image image_id="4" form="dose" />
我想把它们变成更像这样的东西:
<img src="4.jpg" class="dose" />
我有一些运气与TextWrangler做一些正则表达式的东西,但我很难过。关于如何找到&amp;的任何想法替换所有这些图像路径?
编辑: 为了将来的参考,这是我最终在PHP中输出的内容:
$body = $post['Body_html'];
$pattern = '/txp:upm_image image_id="([0-9]+)" form="([^"]*)"/i';
$replacement = 'img src="/images/$1.jpg" class="$2"';
$body = preg_replace($pattern, $replacement, $body);
// outputed <img src="/images/59.jpg" class="dose" />
答案 0 :(得分:1)
我不会用grep;它是你想要的
$ echo '<txp:upm_image image_id="4" form="dose" />' | sed -e 's/^.*image_id="\([[:digit:]]*\)".*form="\([[:alpha:]]*\)".*/<img src="\1.jpg" class="\2" \/>/'
<img src="4.jpg" class="dose" />
$
如果您的班级有字母数字字符,请使用[[:alnum:]]
(适用于macos darwin)
答案 1 :(得分:0)
不确定您使用的是哪种工具,但请尝试使用此正则表达式解决方案:搜索此内容:
<txp:upm_image\s+image_id="(\d+)"\s+form="([^"]*)"\s*\/>
并替换为:
<img src="$1.jpg" class="$2" />
请注意,这仅适用于与您的示例具有相同形式的txp标记。如果存在具有额外属性的txp标记,或者它们的顺序不同,则会失败。