preg_替换php图像messup
我正在努力让bbcode图像正常工作。但我有问题 代码中有什么错误,为什么 我有以下意见:preg_替换php图像messup,php,regex,Php,Regex,我正在努力让bbcode图像正常工作。但我有问题 代码中有什么错误,为什么 我有以下意见: [img]http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg[/img] 并希望它是: <img src="http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg"> 但结果是: `Q:我怎样才能让它正常工作? 完整代码: func
[img]http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg[/img]
并希望它是:
<img src="http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg">
但结果是:
`Q:我怎样才能让它正常工作?
完整代码:
function parsebb($body,$userid = false, $user2 = false) {
$find = array(
"@\n@",
"@[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]@is",
"/\[url\=(.+?)\](.+?)\[\/url\]/is",
"/\[b\](.+?)\[\/b\]/is",
"/\[i\](.+?)\[\/i\]/is",
"/\[u\](.+?)\[\/u\]/is",
"/\[farge\=(.+?)\](.+?)\[\/farge\]/is",
"/\[size\=(.+?)\](.+?)\[\/size\]/is",
"/\[font\=(.+?)\](.+?)\[\/font\]/is",
"/\[boks\=venstre\](.+?)\[\/boks\]/is",
"/\[boks\=hoyre\](.+?)\[\/boks\]/is",
"/\[boks\=midten\](.+?)\[\/boks\]/is",
"/\[img\](.+?)\[\/img\]/is",
"/\[email\](.+?)\[\/email\]/is",
"/\[midten\](.+?)\[\/midten\]/is",
"/\[venstre\](.+?)\[\/venstre\]/is",
"/\[hoyre\](.+?)\[\/hoyre\]/is",
);
$replace = array(
"<br />",
"<a href=\"\\0\">\\0</a>",
"<a href=\"$1\" target=\"_blank\">$2</a>",
"<strong>$1</strong>",
"<em>$1</em>",
"<span style=\"text-decoration:underline;\">$1</span>",
"<font color=\"$1\">$2</font>",
"<font size=\"$1\">$2</font>",
"<span style=\"font-family: $1\">$2</span>",
"<div align=\"left\" style=\"text-align:center; width:50%; \">$1</div>",
"<div align=\"right\" style=\"text-align:center; width:50%;\">$1</div>",
"<div align=\"center\" style=\"text-align:center; width:50%;\">$1</div>",
"<img src=\"$1\">",
"<a href=\"mailto:$1\" target=\"_blank\">$1</a>",
"<div style=\"text-align:center;\">$1</div>",
"<div style=\"text-align:left;\">$1</div>",
"<div style=\"text-align:right;\">$1</div>",
);
$body = htmlspecialchars($body);
$body = preg_replace($specialCodes, $specialCodesReplace, $body);
return $body;
}
函数parsebb($body,$userid=false,$user2=false){
$find=数组(
“@\n@”,
“@[:alpha:]+://[^[:space:]+[:alnum:]/][is”,
“/\[url\=(.+?)\](.+?)\[\/url\]/is”,
“/\[b\](.+?)\[\/b\]/is”,
“/\[i\](.+?)\[\/i\]/is”,
“/\[u\](.+?)\[\/u\]/is”,
“/\[farge\=(.+?)\](.+?)\[\/farge\]/is”,
“/\[size\=(.+?)\](.+?)\[\/size\]/is”,
“/\[font\=(.+?)\](.+?)\[\/font\]/is”,
“/\[boks\=venstre\](.+?)\[\/boks\]/is”,
“/\[boks\=hoyre\](.+?)\[\/boks\]/is”,
“/\[boks\=midten\](.+?)\[\/boks\]/is”,
“/\[img\](.+?)\[\/img\]/is”,
“/\[email\](.+?)\[\/email\]/is”,
“/\[midten\](.+?)\[\/midten\]/is”,
“/\[venstre\](.+?)\[\/venstre\]/is”,
“/\[hoyre\](.+?)\[\/hoyre\]/is”,
);
$replace=数组(
“
”,
"",
"",
“$1”,
"$1",
"$1",
"$2",
"$2",
"$2",
"$1",
"$1",
"$1",
"",
"",
"$1",
"$1",
"$1",
);
$body=htmlspecialchars($body);
$body=preg_replace($specialCodes,$specialCodesReplace,$body);
返回$body;
}
问题出在您的身上
"@[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]@is"
“@[[:alpha:]+://[^[:space:]+[[:alnum://]@is”
模式,甚至[img]。。。[/img]正在与它匹配,请对它们进行注释并重试,它将以良好的形式进行回复,或者将此模式行放在数组的末尾有很多bbcode解析器。此外,请使用其他分隔符;像
~
或@
而不是/
。问题在于你的“@[[:alpha:]+://[^[:space:]+[:alnum:]/@is”,
模式甚至[img]。。。[/img]正在与它匹配,请对它们进行注释,然后重试。您将看到它将以良好的形式被回复,或者将此模式行放在阵列的末尾。您的服务器也将因此类正则表达式而过载,您可以考虑使用<代码> PrggQueule<代码>,而不是逃避每一个代码块,而不是使用<代码> $ 1 <代码>作为替换字符串,使用例如“代码> 1美元< /代码>,并在一个单独的文件中定义CSS类<代码> .Center < /Cord>(尝试查找另一个名称)。这样做有两个好处:1)html代码会更短。2) 当您想要更改消息的外观时,只需编辑css类即可。