我想在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>
问题。"
请注意,另一个标记中有一个"。 如果字符串,比如"编程"已经在链接中,它不会转换它,我该怎么办?可能吗?
谢谢!
尝试使用否定断言
后视断言以 (?<= 表示正面断言和 (?<!
开头表示否定断言表示否定断言前瞻断言以 (?= 表示肯定断言和 (?! 表示否定断言)开头
例子:
http://www.ibm.com/developerworks/library/os-php-regex2/
http://sabirul-mostofa.blogspot.com/2011/05/php-regex-lookaround-assertion.html
PHP 正则表达式负面外观背后的断言,preg_replace_callback
这将起作用
<?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."
在字符串替换函数中,像这样在单词前后传递要替换的单词。我认为这可能会解决您的问题
$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."