问题是我正在尝试重定向,如果它是一个空白目标的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;
}
答案 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);