如何在自定义构建的网站上格式化[url =] [/ url]代码或短代码?

时间:2014-06-28 05:09:12

标签: php

我需要制作某种函数或短代码来格式化这些类型的链接。

我在一些网站上工作并从json格式解析数据,在这些数据中有像这样的链接代码作为文本。

所以我在json文件中得到的是:

[url=http://store.steampowered.com/app/901583/]GTA IV: Complete Edition[/url] includes Grand Theft Auto IV and Episodes from Liberty City.

所以我使用:

$json = file_get_contents('link file'); //to get json file
$file = json_decode($json, true); //to retrieve data as an array

我从中得到的是:

Array
(
[6516] => Array
    (
        [success] => 1
        [data] => Array
            (
                [name] => Grand Theft Auto IV: Complete Edition
                [purchase_text] => [url=http://store.steampowered.com/app/901583/]GTA IV: Complete Edition[/url] includes Grand Theft Auto IV and Episodes from Liberty City.
            )

    )

)

代码太大,所以我剪掉了无关的文字

而不是我使用:

$pobj[$package]['data']['purchase_text']; //where $package is package id(the number in array)

但是这个文本对于每个json文件都是不同的,并且可能有多个url所以我需要某种通用的解决方案

那么如何将这些网址链接作为普通链接在我的网站上进行格式化?某种短代码还是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式,例如

\[url=(.*)\](.*)\[\/url\]

这会拉链接和标题:

preg_match('|\[url=(.*)\](.*)\[\/url\]|', $string, $matches);

$matches[1]将成为链接,$matches[2]将成为标题:

echo '<a href="' . $matches[1] . '">' . $matches[2] . '</a>';

回应评论让我们变得更复杂:

此正则表达式将更准确,并且匹配字符串中的多个URL:

\[url=(https?:\/\/?[\da-z\.-]+\.[a-z\.]{2,6}([\/\w \.-]*)*\/?)\](.*?)\[\/url\]