gpt4 book ai didi

PHP Preg Replace - 用空格匹配字符串 - WordPress

转载 作者:行者123 更新时间:2023-12-03 22:47:56 26 4
gpt4 key购买 nike

我正在尝试扫描我的 WordPress 内容:

<p><span class="embed-youtube">some iframed video</span></p>   

然后将其更改为:

<p class="img_wrap"><span class="embed-youtube">some iframed video</span></p>  

在我的主题的 function.php 文件中使用以下代码:

$classes = 'class="img_wrap"';
$youtube_match = preg_match('/(<p.*?)(.*?><span class="embed-youtube")/', $content, $youtube_array);

if(!empty($youtube_match))
{
$content = preg_replace('/(<p.*?)(.*?><span class=\"embed-youtube\")/', '$1 ' . $classes . '$2', $content);
}

但由于某种原因,我的正则表达式没有匹配,替换也不起作用。我不明白为什么没有匹配,因为存在类 embed-youtube 的跨度。

更新 - 这是完整的功能

function give_attachments_class($content){
$classes = 'class="img_wrap"';
$img_match = preg_match("/(<p.*?)(.*?><img)/", $content, $img_array);
$youtube_match = preg_match('/(<p.*?)(.*?><span class="embed-youtube")/', $content, $youtube_array);

// $doc = new DOMDocument;
// @$doc->loadHTML($content); // load the HTML data

// $xpath = new DOMXPath($doc);
// $nodes = $xpath->query('//p/span[@class="embed-youtube"]');

// foreach ($nodes as $node) {
// $node->parentNode->setAttribute('class', 'img_wrap');
// }

// $content = $doc->saveHTML();


if(!empty($img_match))
{
$content = preg_replace('/(<p.*?)(.*?><img)/', '$1 ' . $classes . '$2', $content);
}
else if(!empty($youtube_match))
{
$content = preg_replace('/(<p.*?)(.*?><span class=\"embed-youtube\")/', '$1 ' . $classes . '$2', $content);
}

$content = preg_replace("/<img(.*?)src=('|\")(.*?).(bmp|gif|jpeg|jpg|png)(|\")(.*?)>/", '<img$1 data-original=$3.$4 $6>' , $content);

return $content;
}

add_filter('the_content','give_attachments_class');

最佳答案

不要使用正则表达式,而是有效地使用 DOMXPath 为您执行此操作。

$doc = new DOMDocument;
@$doc->loadHTML($html); // load the HTML data

$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//p/span[@class="embed-youtube"]');

foreach ($nodes as $node) {
$node->parentNode->setAttribute('class', 'img_wrap');
}

echo $doc->saveHTML();

关于PHP Preg Replace - 用空格匹配字符串 - WordPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com