我整天都在考虑如何将[img]imagesrc[/img]
更改为<img src='imagesrc' />
。
那么,在这种情况下,我可以使用str_replace
来解决。只是好奇是可以用preg_replace
吗?
我无法使用str_replace
解决的另一个问题是将[size=14]text[/size]
更改为类似<font style='font-size:14px'>text</font>
的内容。
有人请帮帮我。
被修改
$content = [img]imagesrc[/img];
$content = str_replace("[img]", "<img src='", $content);
$content = str_replace("[/img]", "' style='width:100%'/>", $content);
这是我使用str_replace
[img]所做的。只想使用preg_replace
了解任何解决方案,因为我无法使用[size=14]text[/size]
解决str_replace
。
我只是想知道为什么人们总是抱怨我的问题不相关或任何其他原因。我是新手,这就是为什么我在这里寻求帮助。这不是寻求帮助的平台吗?我不是在没有尝试的情况下直接回答,我只是要求提供替代和更好的解决方案以提高我的技能。
答案 0 :(得分:1)
试试这个regex:
preg_replace("/\\[img\\](.*)\\[\\/img\\]/", '<img src="$1"/>', "[img]imagesrc[/img]");
答案 1 :(得分:1)
以下是一个例子:
<?php
$content = '[img]imagesrc[/img][size=10]Text with size of 10[/size]';
$html = preg_replace("#\[img\](.+)\[\/img\]#iUs", '<img src="$1"/>', $content);
$html = preg_replace('#\[size\=(\d+)\](.+)\[\/size\]#iUs', '<font style="font-size: $1px;">$2</font>', $html);
print $html;
?>
你也可以使它成为一个功能,如:
function parseBBcode($content) {
$html = $content;
$html = preg_replace('#\[img\](.+)\[\/img\]#iUs', '<img src="$1" alt="Image" />', $html);
$html = preg_replace('#\[size\=(\d+)\](.+)\[\/size\]#iUs', '<font style="font-size: $1px;">$2</font>', $html);
$html = preg_replace('#\[b\](.+)\[\/b\]#iUs', '<b>$1</b>', $html);
$html = preg_replace('#\[link(?|=[\'"]?+([^]"\']++)[\'"]?+\]([^[]++)|](([^[]++)))\[/link\]#iUs', '<a href="$1">$2</a>', $html);
return $html;
}
然后使用它:
print parseBBcode('[img]imagesrc[/img] [img]imagesrc2[/img] [img]imagesrc3[/img] [size=10]Text with size of 10[/size] [b]text to be bolded[/b] [link=http://www.google.com]Link to google[/link] [link]http://www.google.com[/link');
或:
$content = '[img]imagesrc[/img] [img]imagesrc2[/img] [img]imagesrc3[/img] [size=10]Text with size of 10[/size] [b]text to be bolded[/b] [link=http://www.google.com]Link to google[/link] [link]http://www.google.com[/link]';
print parseBBcode($content);
答案 2 :(得分:1)
你的第一个问题可以解决:
preg_replace('/\[img\]([^\[\]]+)\[\/img\]/',"<img src='$1'/>",$string);
你的第二个:
preg_replace('/\[size=(\d+)\](.+)\[\/size\]/',"<font style='font-size:$1px'>$2</font>",$s);
正则表达式非常宝贵,而且非常简单。我强烈推荐learning more about regex,以便您可以为自己的应用程序编写自己的正则表达式。