所以我正在使用一个对超链接进行编码的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>
编辑:已更改,以便同时提取名称。