Php 替换字符串中两点之间的文本
这似乎是一个不需要思考的问题,但问题是我不会事先知道绳子的长度。我的客户有一个预先制作/购买的博客,通过其CMS将youtube视频添加到帖子中-基本上我希望我的功能搜索如下字符串:Php 替换字符串中两点之间的文本,php,html,regex,Php,Html,Regex,这似乎是一个不需要思考的问题,但问题是我不会事先知道绳子的长度。我的客户有一个预先制作/购买的博客,通过其CMS将youtube视频添加到帖子中-基本上我希望我的功能搜索如下字符串: <embed width="425" height="344" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.youtube.
<embed width="425" height="344" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.youtube.com/somevid"></embed>
不管当前的宽度和高度值是多少,我想用我自己的常量来替换它们,例如width=“325”height=“244”。有人能解释一下最好的方法吗
非常感谢 应该使用正则表达式来替换它。例如:
if(preg_match('#<embed .*type="application/x-shockwave-flash".+</embed>#Us', $originalString)) {
$string = preg_replace('#width="\d+"#', MY_WIDTH_CONSTANT, $originalString);
}
if(preg#u match('#DOMDocument
FTW
<?php
define("EMBED_WIDTH", 352);
define("EMBED_HEIGHT", 244);
$html = <<<HTML
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<embed width="425" height="344" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.youtube.com/somevid"></embed>
</body>
</html>
HTML;
$document = new DOMDocument();
$document->loadHTML($html);
$embeds = $document->getElementsByTagName("embed");
$pattern = <<<REGEXP
|
(https?:\/\/)? # May contain http:// or https://
(www\.)? # May contain www.
youtube\.com # Must contain youtube.com
|xis
REGEXP;
foreach ($embeds as $embed) {
if (preg_match($pattern, $embed->getAttribute("src"))) {
$embed->setAttribute("width", EMBED_WIDTH);
$embed->setAttribute("height", EMBED_HEIGHT);
}
}
echo $document->saveHTML();
请避免使用正则表达式解析HTML。请改用正则表达式。是的,DOMDocument可以帮助您找到标记、替换属性并保存整个页面。不是wordpress,只是一些通用的博客软件