我想用一组新的元标记替换所有元标记。我有以下代码
<?php
$header = '
<link rel="shortcut icon" href="/images/favicon.ico" />
<title>meta replace test</title>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="..." />
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script.js"></script>';
$meta = '<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-language" content="en" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="copyright" content="2000, 2002, 2005, 2007 phpBB Group" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9" />';
$regex = '/<meta.*\/>/';
preg_match_all($regex, $header, $matches);
$header = preg_replace($regex, $meta, $header);
echo "<pre>";
echo print_r($matches);
echo "</pre>";
$header
中的元标记应替换为$meta
中的元标记。 $header
中有3个元标记,因此它将替换3次,除非我将所有元标记放在彼此旁边。无论有多少标签,我只想更换一次。
我使用的正则表达式如下:
$regex = '/<meta.*\/>/';
答案 0 :(得分:1)
如果您要将所有<meta...>
标记替换为$meta
的内容,则必须将标记作为单独步骤删除,然后在特定位置插入替换标记。< / p>
此解决方案要求标签格式正确。请注意,它尚未经过测试。
$header = preg_replace(/<meta\s.*?\/>/isg, "", $header);
$header = preg_replace(/(<\/title>[\s\n]*)/is, "$1$meta", $header);