我需要制作某种函数或短代码来格式化这些类型的链接。
我在一些网站上工作并从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所以我需要某种通用的解决方案
那么如何将这些网址链接作为普通链接在我的网站上进行格式化?某种短代码还是什么?
答案 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\]