Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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_替换需要帮助吗_Php_Regex_Preg Replace - Fatal编程技术网

php preg_替换需要帮助吗

php preg_替换需要帮助吗,php,regex,preg-replace,Php,Regex,Preg Replace,我创建了一个函数来搜索字符串,并用链接替换这些字符串中的关键字。我正在使用 preg_replace('/\b(?<!=")(?<!=\')(?<!=)(?<!=&quot;)(?<!>)(?<!&gt;)' . $keyword . '(?!</a)(?!&lt;/a)\b', $newString, $row); 你可以理解我的沮丧。 由于对regex没有信心,我想我会问这里是否有人知道一个解决方案 谢谢 像这样合适的

我创建了一个函数来搜索字符串,并用链接替换这些字符串中的关键字。我正在使用

preg_replace('/\b(?<!=")(?<!=\')(?<!=)(?<!=&quot;)(?<!>)(?<!&gt;)' . $keyword . '(?!</a)(?!&lt;/a)\b', $newString, $row);
你可以理解我的沮丧。 由于对regex没有信心,我想我会问这里是否有人知道一个解决方案


谢谢

像这样合适的HTML解析器怎么样


像这样合适的HTML解析器怎么样


通过查看我收集的信息,它会查看每个链接,并替换其中的某些文本。这不是我想要达到的。我试图用链接包装关键字的任何实例。问题是,如果关键字是用其他单词包装的,而这些单词是用链接包装的(如原始示例),它仍然会用链接包装关键字,因此我将以双链接结束。@Jack-你的意思是
?基本上,我使用
preg\u replace
汽车
转换为
。这很好,但是如果已经有一个链接,比如
我的
preg_replace
会将它从我收集的内容变成
销售
,它会查看每个链接并替换其中的某些文本。这不是我想要达到的。我试图用链接包装关键字的任何实例。问题是,如果关键字是用其他单词包装的,而这些单词是用链接包装的(如原始示例),它仍然会用链接包装关键字,因此我将以双链接结束。@Jack-你的意思是
?基本上,我使用
preg\u replace
汽车
转换为
。这很好,但是如果已经有一个链接,比如
my
preg\u replace
将把它变成
sales
不要对html使用正则表达式…不要对html使用正则表达式…
<a href="www.domain.tdl/keyword.html">Luxury Automobile sales</a>
<a href="www.domain.tdl/keyword.html">Luxury <a href="www.domain.tdl/keywords.html">Automobile</a> Sales</a>
$html = '<a href="www.domain.tdl/keyword.html">Luxury Automobile sales</a>';
$dom  = new DomDocument;
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName('a');
foreach ($nodes as $node)
{
  $node->nodeValue = str_replace('Automobile', 'Cars', $node->nodeValue);
  echo simplexml_import_dom($node)->asXML();
}
foreach ($nodes as $node)
{
  $attr = $node->getAttributeNode('href');
  $attr->value = str_replace('Automobile', 'keyword', $attr->value);
  echo simplexml_import_dom($node)->asXML();
}