在PHP中查找替换动态字符串

时间:2017-01-13 07:35:05

标签: php wordpress

我正在开发一种工具,用于将内容从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个字符?

2 个答案:

答案 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];