2013-11-01 63 views
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>。」

請注意,在另一個標籤內有一個「」。我應該怎麼做,如果字符串,說「編程」已經在一個鏈接,它不會轉換它?可能嗎?

謝謝!

回答

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); 

OUTPUT:

string(101) "Hello guys I want to ask a <a href="https://www.stackoverflow.com">programming</a>-related questions." 
+0

你好,非常感謝你的幫助。但是我認爲我不應該在那裏輸入那個短劃線,所以它會把編程改成另一個單詞。如果沒有短跑怎麼辦?只是像標籤內的「編程相關」的空間? – jackhao

1

嘗試使用負assertion

向後斷言用(< =正斷言開始?離子和(? <! ?爲負斷言否定的斷言

向前斷言用(=正斷言和(開始爲負斷言

例子:?!

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

+0

嘿,你能給我一個快速的例子嗎? – jackhao

+0

使用谷歌,你可以找到很多的例子,我會編輯我的答案給你一些例子,我發現在谷歌雖然。 – aggressionexp

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." 
+0

嗨,這將工作在90%,但仍然,如果有一個像「最好的編程幫助」這樣的詞,它會導致相同的問題 – jackhao

+0

如果你想替換文字,如「最好的編程幫助」意味着你可以做同樣的這句話也像str_replace(「最好的編程幫助」,「你的字符串在這裏」) – Dhivya

+0

謝謝你的幫助人。但即使我只想替換「編程」,即使「最佳編程幫助」已經在標籤中,它也會影響最佳編程幫助等單詞。 – jackhao

相關問題