0

我想在 PHP 中使用正则表达式/字符串替换函数,这样我就可以用链接替换某些关键字:假设有一个字符串:`

“大家好,我想问一个编程问题。”

输出应该是

“大家好,我想问一个<a href="https://www.stackoverflow.com">programming</a>问题。”

听起来可以使用正则表达式/字符串函数轻松完成某些操作,但是,我发现如果字符串中已经存在链接,例如:

“大家好,我想问一个<a href="https://www.stackoverflow.com">programming related</a>问题。”

正常的正则表达式/字符串替换功能将使它:

“大家好,我想问一个<a href="https://www.stackoverflow.com"><a href="https://www.stackoverflow.com">programming</a> related</a>问题。”

请注意,另一个标签内有一个“”。如果字符串,比如“programming”已经在链接中,我应该怎么做,它不会转换它?可能吗?

谢谢!

4

3 回答 3

1

尝试使用否定断言

Lookbehind 断言以 (?<= 用于肯定断言和 (?< ! 用于否定断言用于否定断言

前瞻断言以 (?= 用于肯定断言和 (?! 用于否定断言

例子:

http://www.ibm.com/developerworks/library/os-php-regex2/

http://sabirul-mostofa.blogspot.com/2011/05/php-regex-lookaround-assertion.html

PHP Regex 否定看断言,preg_replace_callback

于 2013-11-01T04:30:23.373 回答
0

在字符串替换函数中,通过你的单词在单词前后替换为空格。我认为这可能会解决你的问题

$str= "Hello guys I want to ask a programming questions. Hello guys I want to ask a <a href='https://www.stackoverflow.com'>programming</a> questions.";
$str=str_replace(" programming ",'<a href="https://www.stackoverflow.com">programming</a>',$str);
var_dump($str);

输出

"Hello guys I want to ask a <a href='https://www.stackoverflow.com'>programming</a> questions. Hello guys I want to ask a <a href='https://www.stackoverflow.com'>programming</a> questions."
于 2013-11-01T04:44:52.100 回答
0

这会起作用

<?php
$str='Hello guys I want to ask a <a href="https://www.stackoverflow.com">programming-related</a> questions.';

$str=strip_tags($str);
$str=str_replace("programming",'<a href="https://www.stackoverflow.com">programming</a>',$str);

var_dump($str);

输出:

string(101) "Hello guys I want to ask a <a href="https://www.stackoverflow.com">programming</a>-related questions."
于 2013-11-01T04:22:49.977 回答