2011-04-01 18 views
0

所以我有,顯示的URL鏈接的關係搜索並重新應用(kindof)

<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> 
+1

你需要哪些幫助?你的問題是什麼 ? – HoLyVieR 2011-04-01 17:12:54

+0

「我需要一個快速的jQuery或PHP,將這些鏈接應用到像這樣的文檔」 – 2011-04-01 17:16:23

+0

當你說「像這樣的文檔」時它是什麼類型的文檔?是DOM,Word文檔,PDF還是谷歌文檔? – kjy112 2011-04-01 17:16:32

回答

1

您可以通過打開的第一個文件,創建一個地圖,然後打開第二個文件和應用的地圖用php做到這一點。自從我使用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/

你將不得不修改它,如果你在兩個文件的工作,我不知道你的最終輸出需要成爲,但這表明事情可以採取另一種方式。

+0

非常感謝你!我結束了與jQuery版本,它完美的工作! – 2011-04-01 23:12:03

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>"; 
} 
+0

謝謝,但這需要將文檔格式化爲一個數組,它可以做一些檢測找到鏈接?也許正則表達式? – 2011-04-01 17:21:38

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 ]; 
    } 
} 
+0

謝謝,但這需要將文檔格式化爲數組,它可以檢測一些鏈接嗎?也許正則表達式? – 2011-04-01 17:21:06

+0

使用'SimpleXML'將HTML轉換爲對象,然後迭代它。 – hsz 2011-04-01 21:29:01

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 />'; 

?>