【问题标题】:find exact and similar name and return an array with preg_match找到准确和相似的名称并返回一个带有 preg_match 的数组
【发布时间】:2018-09-17 14:35:20
【问题描述】:

大家,

有人可以帮忙吗?

我想按名称搜索列表。举个例子:火影忍者

不过,不仅有火影忍者,还有《火影忍者疾风传》和《火影忍者:火影忍者下一代》。

现在我希望在用户搜索“火影忍者”时显示另外两个。

<li><a href="#Naruto" title="Naruto">Naruto</a></li>
<li><a href="#Naruto-Shippuden" title="Naruto Shippuden">Naruto Shippuden</a></li>
<li><a href="#Boruto-Naruto-Next-Generations" title="Boruto: Naruto Next Generations">Boruto: Naruto Next Generations</a></li>

到目前为止,我已经尝试过了。

$re  = '/<li><a href=".*" title="(Naruto|(.*?))">(Naruto|(.*?))<\/a><\/li>/m';
$str = '<ul>
            <li><a href="serie/Boruto-Naruto-Next-Generations" title="Boruto: Naruto Next Generations">Boruto: Naruto Next Generations</a></li>
            <li><a href="serie/Masou-Gakuen-HxH" title="Masou Gakuen HxH">Masou Gakuen HxH</a></li>
            <li><a href="serie/Matantei-Loki-Ragnarok" title="Matantei Loki Ragnarok">Matantei Loki Ragnarok</a></li>
            <li><a href="serie/Mawaru-Penguindrum" title="Mawaru Penguindrum">Mawaru Penguindrum</a></li>
            <li><a href="serie/Nanbaka" title="Nanbaka">Nanbaka</a></li>
            <li><a href="serie/Narutaru" title="Narutaru">Narutaru</a></li>
            <li><a href="serie/Naruto" title="Naruto">Naruto</a></li>
            <li><a href="serie/Naruto-Shippuden" title="Naruto Shippuden">Naruto Shippuden</a></li>
            <li><a href="serie/Natsu-iro-Kiseki" title="Natsu-iro Kiseki">Natsu-iro Kiseki</a></li>
            <li><a href="serie/Natsume-Yuujinchou" title="Natsume Yuujinchou">Natsume Yuujinchou</a></li>
        </ul>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

【问题讨论】:

  • 那么,你有什么尝试吗?你能告诉我们你的尝试吗?
  • 你能显示你的相关代码吗?
  • 你的名单来自哪里?数据库?硬编码?换句话说,应该将您的搜索应用于什么?
  • 它在一个 HTML 文件中。我已经尝试编辑了我的帖子。
  • 您是否正在尝试将 HTML 与正则表达式匹配? This is slightly relevant. 我们不应该放过任何机会来发布这个答案。永远。

标签: php search preg-match similarity


【解决方案1】:

我强烈建议您使用PHP Simple HTML DOM Parser 来满足您的目的,它很容易使用。

include_once("simple_html_dom.php");

$str = '<ul>
            <li><a href="serie/Boruto-Naruto-Next-Generations" title="Boruto: Naruto Next Generations">Boruto: Naruto Next Generations</a></li>
            <li><a href="serie/Masou-Gakuen-HxH" title="Masou Gakuen HxH">Masou Gakuen HxH</a></li>
            <li><a href="serie/Matantei-Loki-Ragnarok" title="Matantei Loki Ragnarok">Matantei Loki Ragnarok</a></li>
            <li><a href="serie/Mawaru-Penguindrum" title="Mawaru Penguindrum">Mawaru Penguindrum</a></li>
            <li><a href="serie/Nanbaka" title="Nanbaka">Nanbaka</a></li>
            <li><a href="serie/Narutaru" title="Narutaru">Narutaru</a></li>
            <li><a href="serie/Naruto" title="Naruto">Naruto</a></li>
            <li><a href="serie/Naruto-Shippuden" title="Naruto Shippuden">Naruto Shippuden</a></li>
            <li><a href="serie/Natsu-iro-Kiseki" title="Natsu-iro Kiseki">Natsu-iro Kiseki</a></li>
            <li><a href="serie/Natsume-Yuujinchou" title="Natsume Yuujinchou">Natsume Yuujinchou</a></li>
        </ul>';

$htmlStr = str_get_html($str);

echo ('<ul>');
foreach ($htmlStr->find('a[title*="naruto"]') as $link) //find all link having the title attribute containing naruto
    echo ('<li>' . $link . '</li><br />');
echo ('</ul>');

以 HTML 格式输出:

<ul>
    <li><a href="serie/Boruto-Naruto-Next-Generations" title="Boruto: Naruto Next Generations">Boruto: Naruto Next Generations</a></li><br />
    <li><a href="serie/Naruto" title="Naruto">Naruto</a></li><br />
    <li><a href="serie/Naruto-Shippuden" title="Naruto Shippuden">Naruto Shippuden</a></li><br />
</ul>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2022-12-03
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多