我正在开发一种工具,用于将内容从SiteFinity网站迁移到Wordpress。我遇到的一个挑战是处理存储在MSSQL数据库中的html内容具有SiteFinity版本的短代码的实例。查看下面的短代码内容示例:
<div class="image_boxR">
<div style="text-align: left;">
<img src="[images]8483f3a8-d18b-48ed-80f7-a60c26469132" title="The title of the image" /><br />
</div>
<div>
This is the caption for the image.
</div>
</div>
我发现了一些帖子,其中提出了类似的问题但是整个字符串是已知的,而在我目前的情况下,我需要的字符串&#34;抓住&#34;是[images]8483f3a8-d18b-48ed-80f7-a60c26469132
其中[images]
是我需要查找的内容,我需要将每个GUID(8483f3a8-d18b-48ed-80f7-a60c26469132
)存储在一个数组中,然后我将用它来查询另一个表并获取正确的图像URL。
因此,找到[images]
似乎很简单,问题是,如何在[images]
代码后提取36个字符?
答案 0 :(得分:2)
最简单的方法是使用正则表达式。
看一下preg_match_all和preg_replace函数。
要匹配此短代码,请使用此正则表达式#\[images\](?<guid>[a-f0-9\-]*)#
(在线正则表达式测试程序https://regex101.com/r/FZuJPh/1)
获取匹配的示例代码:
<?php
echo '<pre>';
$string = <<<EOF
<div class="image_boxR">
<div style="text-align: left;">
<img src="[images]8483f3a8-d18b-48ed-80f7-a60c26469132" title="The title of the image" /><br />
</div>
<div>
This is the caption for the image.
</div>
</div>
<div class="image_boxR">
<div style="text-align: left;">
<img src="[images]8483f3a8-d18b-48ed-80f7-a60c26469132" title="The title of the image" /><br />
</div>
<div>
This is the caption for the image.
</div>
</div>
EOF;
preg_match_all("/\[images\](?<guid>[a-f0-9\-]*)/", $string, $matches);
var_dump($matches);
答案 1 :(得分:1)
如果文本几乎采用相同的格式,这应该可以解决问题吗?
$content =<<<EOF
<div class="image_boxR">
<div style="text-align: left;">
<img src="[images]8483f3a8-d18b-48ed-80f7-a60c26469132" title="The title of the image" /><br />
</div>
<div>
This is the caption for the image.
</div>
</div>
EOF;
preg_match('/"\[images\](.*?)"/', $content, $matches);
echo $matches[1];