PHP:将明显的超链接替换为 html 超链接


PHP: Replacing obvious hyperlink to a html hyperlink

所以我正在使用一个对超链接进行编码的API,如下所示:

<u>'n''*HYPERLINK '"http://www.youtube.com/watch?v=A0VUsoeT9aM'"A Youtube video</u>

我想将它们转换为普通的超链接:

<a href="http://www.youtube.com/watch?v=A0VUsoeT9aM">A Youtube video</a>

我对此有一些问题,因为它使用了很多反斜杠和引号

所以我想也许这会起作用:

 <?
$string = '<u>''n''''*HYPERLINK ''"http://www.youtube.com/watch?v=A0VUsoeT9aM''"A Youtube Video</u>';
$patterns = array();
$patterns[0] = '/(<u>....................)/g';
$patterns[1] = '/(''''")(?!http:'/'/)/g"';
$patterns[2] = '/(<'/u>)/g';
$replacements = array();
$replacements[2] = '<a href=';
$replacements[1] = '"';
$replacements[0] = '</a>';
echo preg_replace($patterns, $replacements, $string);
 ?>

但是A.这是不起作用的:警告:preg_replace():第 11 行 X.php 中的未知修饰符"g"

和 B.如果超链接文本也是 Url,则这不起作用

试试这个:

$string = '<u>''n''''*HYPERLINK ''"http://www.youtube.com/watch?v=A0VUsoeT9aM''"A Youtube Video</u>';
$pattern = '/http[?.:=''w''d''/]*/';
$namePattern = '/(?:")([''s''w]*)</';
preg_match($pattern, $string, $matches);
preg_match($namePattern, $string, $nameMatches);
echo 'a href="'.$matches[0].'">'.$nameMatches[1].'/a>';
//outputs <a href="http://www.youtube.com/watch?v=A0VUsoeT9aM">A Youtube Video</a>

编辑:已更改,以便同时提取名称。