$string = "<tag>i dont know what is here</tag>"
$string = str_replace("???", "<tag></tag>", $string);
echo $string; // <tag></tag>
那麼我在找什麼代碼?簡單:如何用php代替「all between」?
$string = "<tag>i dont know what is here</tag>"
$string = str_replace("???", "<tag></tag>", $string);
echo $string; // <tag></tag>
那麼我在找什麼代碼?簡單:如何用php代替「all between」?
$search = "/[^<tag>](.*)[^<\/tag>]/";
$replace = "your new inner text";
$string = "<tag>i dont know what is here</tag>";
echo preg_replace($search,$replace,$string);
輸出:
<tag>your new inner text</tag>
我假設你想更換標籤的內容,而不僅僅是更換整個字符串。 – rlemon
應該使用lookaround來代替,說實話。 –
運行此代碼,因爲我得到警告:preg_replace()[function.preg-replace]:第1行上的未知修飾符't' – anthonygore
$string = "<tag>i dont know what is here</tag>"
$string = "<tag></tag>";
echo $string; // <tag></tag>
或公正?
$string = str_replace($string, "<tag></tag>", $string);
對不起,無法抗拒。也許你用更多的細節更新你的問題。 )
對不起,我dnot知道熱把問題.... – faq
$string = "<tag>i dont know what is here</tag>"
$string = preg_replace('#(<tag.*?>).*?(</tag>)#', '$1$2', $string)
您在第二個參數中缺少替換字符串:'$ 1'。'new text'''2' – gradosevic
一個通用的功能:
function replace_between($str, $needle_start, $needle_end, $replacement) {
$pos = strpos($str, $needle_start);
$start = $pos === false ? 0 : $pos + strlen($needle_start);
$pos = strpos($str, $needle_end, $start);
$end = $pos === false ? strlen($str) : $pos;
return substr_replace($str, $replacement, $start, $end - $start);
}
好於公認的答案。除非需要使用正則表達式替換,否則無需使用正則表達式替換。 – sgroves
如果 「標籤」 的變化:
$string = "<tag>i dont know what is here</tag>";
$string = preg_replace('|^<([a-z]*).*|', '<$1></$1>', $string)
echo $string; // <tag></tag>
如果您不知道<tag>
標籤內部的內容,則可能存在另一個<tag>
標籤,例如,
<tag>something<tag>something else</tag></tag>
等通用字符串替換函數不會做這項工作。
更健壯的解決方案是將字符串視爲XML並使用DOMDocument
來操作它。誠然,這隻有在字符串作爲XML有效時纔有效,但我仍然認爲這是比字符串替換更好的解決方案。
$string = "<tag>i don't know what is here</tag>";
$replacement = "replacement";
$doc = new DOMDocument();
$doc->loadXML($str1);
$node = $doc->getElementsByTagName('tag')->item(0);
$newNode = $doc->createElement("tag", $replacement);
$node->parentNode->replaceChild($newNode, $node);
echo $str1 = $doc->saveHTML($node); //output: <tag>replacement</tag>
關於制定愚蠢的問題:)) – faq