編寫一個instagram小部件給我留下了一個我自己無法解決的問題。我收到包含圖像描述和標籤的數組文本,所以像:PHP str-replace從數組中取出整個單詞
"text": "#Hashtag ! Lorem Ipsum dolor sit ament. #hash #myword #another #hashing",
和含有像所有的標籤另一個數組:
"tags": [
"hashtag",
"hash",
"myword",
"another",
"hashing",
],
我的插件提供了一個選項,選擇以顯示描述,標籤或說明和標籤。
因此,我必須從標籤中刪除標籤。到目前爲止這麼容易。 首先,我把所有的標籤和擴展它們以「#」開始,所以「hashtag」變成「#hashtag」並將它們保存到一個新的數組(alltags)。
之後我正在用str_replace進行檢查,以替換文本內部的所有hashtags。它需要被str_replace爲keysensitive。
$noTags = str_replace($alltags, "", $instagramText);
文本的輸出
tag ! Lorem Ipsum dolor sit ament.
,因爲「#標籤」的哈希得到由「散」主題標籤所取代。
我發現這個解決方案:PHP string replace match whole word這應該爲我工作。但是我有一個完整的數組來檢查(動態)不只一個單詞。
現在的問題是: 我如何檢查整個單詞不僅是單詞的一部分,讓「散」不會影響「主題標籤」?
編輯 我想要顯示「Hashtag!Lorem Ipsum ....」不僅僅是「!Lorem Ipsum ...」。這就是爲什麼我對密鑰敏感 - 連接標籤都是小寫字母(哈希),句子中使用的標籤是而不是小寫字母(Hashtag)。所以我可以刪除那些我不需要建立正確的句子。例如,它也可以是「我們#想你」 - 所以傳遞的標籤將是「想要的」。如果我將所有輸出替換爲「我們你」。如果我用keysensitive替換整個單詞,它將是「我們#想你」。希望你明白我想要做什麼。
謝謝!
克里斯 - 嗨,你的解決方案會有所幫助,但我忘了一個重要的信息,我猜。我想要顯示「Hashtag!Lorem Ipsum ....」不僅僅是「!Lorem Ipsum ...」。這就是爲什麼我去敏感鍵 - 標籤都是小寫字母,在句子中使用的標籤不是小寫字母(Hashtag),只是用於鏈接的標籤是小寫字母(哈希)。所以我可以刪除那些我不需要建立正確的句子。 – ThomasB
@ThomasB好的,我忘記了。您可以刪除正則表達式末尾的_case不區分(i)_開關,它也應該匹配字符大小寫。 但你是否也想用'Hashtag'代替'#Hashtag'? – chris
說實話,我不知道上面的代碼應該做什麼?我不熟悉PHP中的替換,所以我不明白爲什麼你有str_ireplace匹配[1]匹配[1]匹配[0]。順便說一句:我試圖插入它,編輯它在執行第一個元素時崩潰了我的頁面。 – ThomasB