【发布时间】:2020-08-01 17:22:01
【问题描述】:
在有人问之前,我已经花了一个小时试图找到关于 SO 的解决方案,但似乎没有什么能完全达到我想要的......如果它在那里,我道歉!
所以...我正在尝试在一堆文本上运行 preg_replace 来替换成对的短代码。
示例文本:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
[img]Abc123[/img][cap]This is an image[/cap]
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
[img]321cbA[/img][cap]This is also an image[/cap]
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
我想把每张图片和标题放在一起并替换它们:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
<img src="Abc123.jpg" alt="This is an image" />
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
<img src="321cbA.jpg" alt="This is also an image" />
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
我需要的代码如下:
$text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
[img]Abc123[/img][cap]This is an image[/cap]
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
[img]321cbA[/img][cap]This is also an image[/cap]
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.";
$pattern = '/\[(img)\](.*?)\[\/\1\]?/';
// This doesn't work: $pattern = '/\[(img)\](.*?)\[\/\1\]\[(cap)\](.*?)\[\/\4\]?/';
$replacement = '<img src="$2.jpg" alt="Help" />';
// "Help" will be $5 when we get both values
echo preg_replace($pattern, $replacement, $text);
此代码获取一个值,但我无法在我的一生中获得获取这两个值的模式(上面的注释行是我所拥有的)。我已经尝试了几十个 SO 页面和其他网站,但似乎没有任何效果。毫无疑问,修正后的模式会很简单,但如果有人能让我摆脱痛苦,我将不胜感激!
感谢您的宝贵时间。
【问题讨论】:
标签: php regex preg-replace shortcode