我一直在寻找一个看似简单的问题的答案,但无济于事。
我有一些 HTML 输出,例如:
<div id="attachment_1098" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-1.jpg" ]][[img class="size-thumbnail wp-image-1098" title="John Doe" src="mydomain.com/wp-content/uploads/2010/11/photo-1.jpg" alt="John Doe" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">John Doe</p></div>
<div id="attachment_1080" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-2.jpg" ]][[img class="size-thumbnail wp-image-1080" title="Fred Bloggs" src="mydomain.com/wp-content/uploads/2010/11/photo-1.jpg" alt="Fred Bloggs" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">Fred Bloggs</p></div>
<div id="attachment_1099" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-3.jpg" ]][[img class="size-thumbnail wp-image-1099" title="Jane Doe" src="mydomain.com/wp-content/uploads/2010/11/photo-3.jpg" alt="Jane Doe" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">Jane Doe</p></div>
<div id="attachment_1096" class="wp-caption alignleft" style="width: 160px">[[ a href="mydomain.com/wp-content/uploads/2010/11/photo-4.jpg" ]][[img class="size-thumbnail wp-image-1096" title="Joe Public" src="mydomain.com/wp-content/uploads/2010/11/photo-4.jpg" alt="Joe Public" width="150" height="200" /]][[ /a ]]<p class="wp-caption-text">Joe Public</p></div>
(上面的 html 实际上格式正确,必须将锚点和图像中的 < & > 分别替换为 [[ 和 ]] 才能发布。)
我想用“wp-caption-text”类围绕每个(p)的文本内容包装一个链接,其网址应具有以下格式:
'/my-page-root/'.strtolower(str_replace(' ','-',$linkText)).'';
(所以 John Doe 会链接到:/my-page-root/john-doe等)
现在,我已经了解了 preg_replace,但我不知道如何从反向引用创建链接 URL。这让我认为必须有一种更简单的方法来做到这一点(可能还有更快的方法?)
无论如何,这是我得到的代码:
<?php $contentLinked = preg_replace("/(<p class=\"wp-caption-text\">.*<\/p>)/Us", "<p class=\"wp-caption-text\"><a href=\"\">$1</a></p>",$content); ?>
这用空锚替换文本就好了,我被如何使用反向引用来创建链接 url 卡住了。
几点注意事项:
链接必须只包含文本(稍后可能只需要包含部分文本,但当我谈到它时,我会越过那座桥)
如果没有解决方法以防止剥离链接,Wordpress 将不允许通过所见即所得的方式进行此操作,有一天其他人可能会进入并破坏格式(因此是硬编码),因此没有有用的 wp 解决方法。
图像上的链接必须保留为完整大小的图像(jquery 库正在进行),因此将整个图像和/或 div 包装在链接中不是一种选择
为你能给我的任何帮助干杯。
安迪