0

因此,我正在尝试将数据库从 Textpattern CMS 迁移到更通用的东西。文章中有一些特定于文本模式的命令可以拉入图像。我想把这些变成通用的 HTML 图像链接。目前,它们在 sql 文件中看起来像这样:

<txp:upm_image image_id="4" form="dose" />

我想把这些变成更像这样的东西:

<img src="4.jpg" class="dose" />

我在 TextWrangler 做一些正则表达式的事情上很幸运,但我很难过。关于如何查找和替换所有这些图像路径的任何想法?

编辑:为了将来参考,这是我最终在 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" />
4

2 回答 2

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)

于 2011-03-25T17:00:14.250 回答
0

不确定您使用的是哪个工具,但请尝试此正则表达式解决方案:搜索:

<txp:upm_image\s+image_id="(\d+)"\s+form="([^"]*)"\s*\/>

并替换为:

<img src="$1.jpg" class="$2" />

请注意,这仅适用于与您的示例具有相同形式的 txp 标签。如果 txp 标签具有额外的属性,或者它们的顺序不同,它将失败。

于 2011-03-25T16:53:18.267 回答