我想在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>
个问题。”
请注意,另一个标签内部有一个“”。我应该怎么做,如果字符串,说“编程”已经在一个链接,它不会转换它?有可能吗?
谢谢!
答案 0 :(得分:1)
尝试使用否定assertion
Lookbehind断言以(?&lt; =表示正断言)和(?&lt;!表示负断言的负断言
开头Lookahead断言以(?=正面断言和(?!表示否定断言)开头
示例:
http://www.ibm.com/developerworks/library/os-php-regex2/
http://sabirul-mostofa.blogspot.com/2011/05/php-regex-lookaround-assertion.html
PHP Regex negative look behind assertion, preg_replace_callback
答案 1 :(得分: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."
答案 2 :(得分: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."