我很困惑如何替换字符串preg_replace

时间:2014-12-15 10:04:03

标签: php

我整天都在考虑如何将[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

我只是想知道为什么人们总是抱怨我的问题不相关或任何其他原因。我是新手,这就是为什么我在这里寻求帮助。这不是寻求帮助的平台吗?我不是在没有尝试的情况下直接回答,我只是要求提供替代和更好的解决方案以提高我的技能。

3 个答案:

答案 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,以便您可以为自己的应用程序编写自己的正则表达式。