PHP - pregreplace url

时间:2015-08-05 19:50:51

标签: php html-parsing converter bbcode

我正在尝试将网址上的preg_replace用于HTML格式的图片,并将其转换为BBCode。

来自:<img src="http://website.com/char/sign/Name+Surname.png">

收件人:[sign]Name+Surname[/sign]

注意:png文件的文件名可以只是Name,它可以包含中间名,例如:Name+Middlename+Surname,它也可以包含-%2527之类的Carl-PhilipsBob+Mc%2527Donalds

所以这是我迄今为止尝试过的,但它没有做任何事情。我做错了什么?

$source = array(
    '#\<img src=\"http\:\/\/website.com\/char\/sign\/\>(.+).png\>#isU'
);

$new = array(
    '[sign]$1[/sign]'
);

$text = preg_replace($source, $new, $text);

1 个答案:

答案 0 :(得分:1)

您将来应该使用解析器(How do you parse and process HTML/XML in PHP?)。你的正则表达式中有一些拼写错误。

这应该可以实现你的目标:

<div class="parent">
  <div class="left box">
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
    <br/>
  </div>
  <div class="right box"></div>
</div>

演示(使用正则表达式的解释):https://regex101.com/r/sT6aG9/1

PHP示例:

/<img src="http:\/\/website\.com\/char\/sign\/(.+?)\.png">/

输出:

$source = '/<img src="http:\/\/website\.com\/char\/sign\/(.+?)\.png">/';
$new = '[sign]$1[/sign]';
$text = '<img src="http://website.com/char/sign/Name+Surname.png">, <img src="http://website.com/char/sign/Bob-Robinson.png">, <img src="http://website.com/char/sign/Michael%2527Ross.png">';
$text = preg_replace($source, $new, $text);
echo $text;

PHP演示:http://3v4l.org/WC5oJ