搜索并重新申请(kindof)

时间:2011-04-01 17:05:42

标签: php jquery

所以我有一个链接列表,显示链接与URL的关系

<a href="http://www.google.com">Mary Jones</a>
<a href="http://www.yahoo.com">Sam</a>
<a href="http://www.stackoverflow.com">Jill</a>

我需要一个快速的jQuery或PHP,将这些链接应用到像这样的文档

Jill    
Sam
Mary Jones
Jill

所以结果将是

<a href="http://www.stackoverflow.com">Jill</a>
<a href="http://www.yahoo.com">Sam</a>
<a href="http://www.google.com">Mary Jones</a>
<a href="http://www.stackoverflow.com">Jill</a>

4 个答案:

答案 0 :(得分:1)

假设您已经知道如何阅读名称文件:

<?php
$lookup = array (
    'Jill' => 'http://www.stackoverflow.com',
    'Sam' => 'http://www/yahoo.com',
    'Mary Jones' => 'http://www.google.com',
)

foreach ($names as $name) {
    echo "<a href='" . $lookup[$name] ."'>$name</a>";
}

答案 1 :(得分:1)

$input = array(
    '<a href="http://www.google.com">Mary Jones</a>',
    '<a href="http://www.yahoo.com">Sam</a>',
    '<a href="http://www.stackoverflow.com">Jill</a>'
);

$urlsMap = array();
foreach ( $input as $url ) {
    $name = stripslashes($url);
    $urlsMap[ $name ] = $url;
}

$relationship = array(
    'Jill',
    'Sam',
    'Mary Jones',
    'Jill'
);

$output = array();
foreach ( $relationship as $name ) {
    if ( isset( $urlsMap[ $name ] ) ) {
        $output[] = $urlsMap[ $name ];
    }
}

答案 2 :(得分:1)

我会使用正则表达式:

<?php

$links =
'<a href="http://www.google.com">Mary Jones</a>
<a href="http://www.yahoo.com">Sam</a>
<a href="http://www.stackoverflow.com">Jill</a>';

$text = preg_match_all('/<a href="([a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+)">([A-Za-z ]+)<\/a>/i', $links, $matches);

$tomatch = array('Jill', 'Sam', 'Mary Jones', 'Jill');

for( $i = 0, $l = count( $matches[0] ); $i < $l; $i++ )
  $corr[$matches[2][$i]] = $matches[1][$i];

foreach( $tomatch as $m )
  echo '<a href="'.$corr[$m].'">'.$m.'</a><br />';

?>

答案 3 :(得分:1)

您可以通过打开第一个文件,创建地图,然后打开第二个文件并应用地图来完成此操作。自从我使用php以来已经有一段时间了,所以我会把它留给其他人。第一部分看起来像这样:

$file = file_get_contents('./linksfile', true);
$links = preg_split("/[\n\r]+/",$file);

$linkMap = array();
foreach ( $links as $link ) {
    # NOTE! regex and xml is generally BAD, 
    # but if you have a fixed format it will do the job:
    $name = preg_replace('/\<.*?\>/g', '', $link);
    $linkMap[ $name ] = $link;
}

然后您需要应用该地图,正如其他人在答案中所示。

如果你想要jQuery,你可以做类似这样的事情:

http://jsfiddle.net/jtbowden/QTZNK/

如果您正在处理两个文件,则必须对其进行修改,我不确定您的最终输出需要什么,但这表明可以采取其他方式。