根据扩展名重定向网址

时间:2014-12-30 15:37:16

标签: php

问题是我正在尝试重定向,如果它是一个空白目标的pdf,以及它是否是目标iframe的mp3音频,但我无法使其工作。它还有一个额外的字符串,它被带到一个已经包含href的数据库中,并且必须根据提到的需要进行修改。

function url($texto)
{
    $cadena_resultante= preg_replace("/((http|https|www)[^\s]+)/", '<a href="$1">$0</a>', $texto);
    $cadena_resultante= preg_replace("/href=\"www/", 'href="http://www', $cadena_resultante);
    ##Verificamos la extencion
    $trozos = explode(".", $cadena_resultante);
    //$extension = end($trozos);

    foreach($trozos as $b)
    {


        if(preg_match('/^mp3/',$b)) {
            $cambio = str_replace('<a href', '<a target="audio" href ', $cadena_resultante);
            echo $cambio;
        }
        elseif(preg_match('/^pdf/',$b))
        {
            $cambio = str_replace('<a target="audio" href="audio.php?titulo=http://localhost/audio/archivos/file/"', '<a target="_blank" href=http://localhost/audio/archivos/file/ ', $cadena_resultante);
        }

    }
    return $cambio;

}

1 个答案:

答案 0 :(得分:0)

您不需要使用正则表达式。对于DOM操作,有一个类。检查一下:

$text = '<a href="pdf.pdf">pdf</a> texto mas texto por el texto <a href="something.mp3">mp3</a> texto texto mas texto texto texto';
function showHtml($text) {
    $Dom = new DOMDocument;
    $Dom->loadHTML($text);
    $links = $Dom->getElementsByTagName('a');
    foreach ($links as $link) {
        $href = $link->getAttribute('href');
        if (!empty($href)) {
            $pathinfo = pathinfo($href);
            if (strtolower($pathinfo['extension']) === 'mp3') {
                $link->setAttribute('target', "iframeId");
            } elseif (strtolower($pathinfo['extension']) === 'pdf') {
                $link->setAttribute('target', "_blank");
            }
        }
    }
    $html = $Dom->saveHTML();
    return $html;
}
showHtml($text);