Php 搜索并重新应用(种类)

Php 搜索并重新应用(种类),php,jquery,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> 所以结果是 <a href="http://www.stackoverflow.com">Jill

因此,我有一个链接列表,显示链接与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>
所以结果是

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

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

<?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>";
}

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

<?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>";
}
$input=array(
'',
'',
''
);
$urlsMap=array();
foreach($url形式的输入){
$name=stripslashes($url);
$urlsMap[$name]=$url;
}
$relationship=array(
“吉尔”,
“山姆”,
“玛丽·琼斯”,
“吉尔”
);
$output=array();
foreach($relationship作为$name){
如果(isset($urlsMap[$name])){
$output[]=$urlsMap[$name];
}
}
$input=array(
'',
'',
''
);
$urlsMap=array();
foreach($url形式的输入){
$name=stripslashes($url);
$urlsMap[$name]=$url;
}
$relationship=array(
“吉尔”,
“山姆”,
“玛丽·琼斯”,
“吉尔”
);
$output=array();
foreach($relationship作为$name){
如果(isset($urlsMap[$name])){
$output[]=$urlsMap[$name];
}
}
我会使用正则表达式:

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

?>
我会使用正则表达式:

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

?>

您可以使用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;
}
$file=文件获取内容('./linksfile',true);
$links=preg_split(“/[\n\r]+/”,$file);
$linkMap=array();
foreach($links作为$link){
#注意!正则表达式和xml通常是不好的,
#但如果您有固定格式,它将完成以下工作:
$name=preg\u replace('/\/g',''$link);
$linkMap[$name]=$link;
}
然后,您需要应用该地图,正如其他人在其答案中所示

如果需要
jQuery
,可以执行以下示例:


如果您正在处理两个文件,您必须修改它,我不确定您的最终输出需要是什么,但这演示了另一种方法。

您可以使用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;
}
$file=文件获取内容('./linksfile',true);
$links=preg_split(“/[\n\r]+/”,$file);
$linkMap=array();
foreach($links作为$link){
#注意!正则表达式和xml通常是不好的,
#但如果您有固定格式,它将完成以下工作:
$name=preg\u replace('/\/g',''$link);
$linkMap[$name]=$link;
}
然后,您需要应用该地图,正如其他人在其答案中所示

如果需要
jQuery
,可以执行以下示例:


如果您正在处理两个文件,则必须修改它,我不确定您的最终输出需要是什么,但这说明了另一种方法。

您需要帮助的部分是什么?你的问题是什么?当你说“像这样的文档”是什么类型的文档时,“我需要一个快速的jQuery或PHP来将这些链接应用到像这样的文档?”?是DOM、word文档、pdf还是google文档?您希望结果打印到文件中吗?你需要阅读文件的帮助吗?你试过什么?我们需要更多的信息。我有一个巨大的文件,像第一个链接,我不想格式化它。然后我有另一个巨大的文档,看起来像是第二个我想应用链接的文档。结果应该显示最后一点,它不需要打印到文件中,我只需要一种方法来自动化这个冗余的任务您需要帮助什么部分?你的问题是什么?当你说“像这样的文档”是什么类型的文档时,“我需要一个快速的jQuery或PHP来将这些链接应用到像这样的文档?”?是DOM、word文档、pdf还是google文档?您希望结果打印到文件中吗?你需要阅读文件的帮助吗?你试过什么?我们需要更多的信息。我有一个巨大的文件,像第一个链接,我不想格式化它。然后我有另一个巨大的文档,看起来像是第二个我想应用链接的文档。结果应该显示最后一点,它不需要打印到文件,我只需要一种方法来自动化这个冗余的任务谢谢,但这需要在数组中格式化文档,它能做一些检测来找到链接吗?也许是正则表达式?使用
SimpleXML
将HTML转换为对象,然后对其进行迭代。谢谢,但这需要在数组中格式化文档,它可以进行一些检测以找到链接吗?也许是正则表达式?使用
SimpleXML
将HTML转换为对象,然后对其进行迭代。谢谢,但这需要在数组中格式化文档,它可以进行一些检测以找到链接吗?也许是正则表达式?谢谢,但这需要在数组中格式化文档,它能做一些检测来找到链接吗?也许是regex?非常感谢!我最终使用了jQuery版本,它工作得非常好!非常感谢你!我最终使用了jQuery版本,它工作得非常好!