Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果单词不在标题内,则Preg replace_Php_Regex - Fatal编程技术网

Php 如果单词不在标题内,则Preg replace

Php 如果单词不在标题内,则Preg replace,php,regex,Php,Regex,我试图做一些简单的事情,但失败了: 我想在PHP中使用preg_replace使关键字成为链接,但我不想在标题中插入它 我的实际preg_替换: $data_replace = '<a href="'.$link.'">$1</a>'; $word_to_replace = "keyword"; $data_source = "<h1>keyword</h1><p>keyword</p>" $pattern = "/\\b(

我试图做一些简单的事情,但失败了: 我想在PHP中使用preg_replace使关键字成为链接,但我不想在标题中插入它

我的实际preg_替换:

$data_replace = '<a href="'.$link.'">$1</a>';
$word_to_replace = "keyword";
$data_source = "<h1>keyword</h1><p>keyword</p>"
$pattern = "/\\b(?!<h[0-6]*\>)(.*?)(" . trim($word_to_replace) . ")(.*?)(?!<\/h[0-6]>)\\b/";
preg_replace($pattern, $data_replace, $data_source, 1);
$data\u replace='';
$word\u to\u replace=“关键字”;
$data\u source=“关键字关键字”
$pattern=“/\\b(?)(*?)(.trim($word\u to\u replace)。”(*?(!)\\b/”;
preg_replace($pattern,$data_replace,$data_source,1);
我想得到:

<h1>keyword</h1><p><a href="http://...">keyword</a></p>
关键字

现在,我的输出给出:

<h1><a href="http://...">keyword</a></h1><p>keyword</p>
关键字

我的正则表达式模式哪里错了? 谢谢

试试这个:

<?php

$data_replace = '<a href="'.$link.'">$1</a>';
$words = ["keyword","foo"];
$out = "<h1>keyword</h1><p>keyword</p>";
foreach ($words as $word){
    $pattern = "/(<[^h].*?>)($word)(<\/)/";
    $out = preg_replace($pattern, "\\1<a href=\"#\">$word</a>\\3", $out);
}
var_dump($out);

你,用a代替。我知道,但我想知道我所知道的答案:)
dejavu:~ jancha$ php -q aa.php
string(46) "<h1>keyword</h1><p><a href="#">keyword</a></p>"