试图在PHP中替换高度和宽度值

时间:2012-04-25 15:07:33

标签: php regex preg-replace

尝试更换身高=""和宽度=""使用PHP的字符串($ content)中的值,我尝试过preg替换为无效, 关于我做错了什么的建议?

示例内容为:

$content = '<iframe width="560" height="315" src="http://www.youtube.com/embed/c0sL6_DNAy0" frameborder="0" allowfullscreen></iframe>';

以下代码:

if($type === 'video'){

        $s = $content;
        preg_match_all('~(?|"([^"]+)"|(\S+))~', $s, $matches);

        foreach($matches[1] as $match){

            $newVal = $this->_parseIt($match);
    preg_replace($match, $newVal, $s);

        }

    }

在这里,我只需要比赛并搜索我的身高和宽度

function _parseIt($match)
{
    $height = "height";
    $width = "width";

    if(substr($match, 0, 5) === $height){

        $pieces = explode("=", $match);
        $pieces[1] = "\"175\"";

        $new = implode("=", $pieces);
        return $new;

    } 

    if(substr($match, 0, 5) === $width){

        $pieces = explode("=", $match);
        $pieces[1] = "\"285\"";

        $new = implode("=", $pieces);
        return $new;

    }

    $new = $match;
    return $new;

}

这可能是一个更短的方法,但是,我真的只是在6个月前选择了编程。

提前致谢!

1 个答案:

答案 0 :(得分:8)

您可以使用preg_replace。它可以采用您想要匹配的正则表达式数组和替换数组。您想要匹配width="\d+"height="\d+"。 (如果你正在解析任意html,你需要扩展正则表达式以匹配可选的空格,单引号等。)

$newWidth = 285;
$newHeight = 175;

$content = preg_replace(
   array('/width="\d+"/i', '/height="\d+"/i'),
   array(sprintf('width="%d"', $newWidth), sprintf('height="%d"', $newHeight)),
   $content);