我有一個字符串有'>>'。我試圖用'測試>>>>'替換'test'>''。preg_replace兩個箭頭和空格
str_replace函數犯規更換任何東西,所以我已經嘗試使用:
$string = preg_replace("/[\>\ \>]/",">>>>", $string);
但這種替換字符串中的所有空格以及箭頭。
所以串結束等的'test>>>>>>>>'
代替'test >>>>'
我有一個字符串有'>>'。我試圖用'測試>>>>'替換'test'>''。preg_replace兩個箭頭和空格
str_replace函數犯規更換任何東西,所以我已經嘗試使用:
$string = preg_replace("/[\>\ \>]/",">>>>", $string);
但這種替換字符串中的所有空格以及箭頭。
所以串結束等的'test>>>>>>>>'
代替'test >>>>'
的/[\>\ \>]/
正則表達式的單個字符要麼是>
,一個空格或>
匹配和替換preg_replace
多次出現(默認)。
如果沒有特殊情況下的需求,你可以使用一個str_replace
像
$s = "test > >";
echo str_replace('> >', '>>>>', $s);
如果你想只替換> >
不是之後或之前與>
,您可以嘗試
echo preg_replace("/(?<!>)> >(?!\s*>)/",">>>>", $s);
請參閱another PHP demo和regex demo。
如果>
前面帶有>
和空間,(?!\s*>)
先行將失敗的比賽,如果這裏有0+空格,接着與>
> >
後(?<!>)
回顧後會失敗的比賽。
你的答案是有效的,但是沒有使用字符串,它對我的字符串有問題 – user3312792
字符串是從數組中取出的,當我打印時我可以看到'>>'但str_replace或preg_replace不會找到帶有空格的箭頭,是有沒有辦法在我嘗試之前清潔琴絃? – user3312792
你的意思是你有一個很難的空間?然後使用'preg_replace(「/> \ s>/u」,「>>>>」,$ s);'。如果在'>'s之間可以有多於1個空格,則在'\ s'後面加'+'。如果你不想匹配'>',linebreak char,'>',用'\ h'替換'\ s'。 –
$input_lines = "I have a string which has '> >'. I am trying";
echo preg_replace("/(?<!>)> >(?!\s*>)/", "-----", $input_lines);
輸出將是: 我有有一個字符串 '----'。我正在嘗試
preg_replace(REG_PATTERN,REPLACEMENT,INPUT_STRING);返回所需的輸出。
它可以與任何具有'>>'的字符串一起使用,或者您的字符串中可能有雙倍空間,您可以通過在正則表達式中增加>和>之間的空格來替換該字符串。 快樂編碼。
「str_replace不會取代任何東西」 - 是的。事實上,它明確地表明它打算做什麼。所以,當我支持你採取不同的方法時,當這種不同的方法失敗時,你應該回到原始代碼並提出一個問題:str_replace的語法要簡單得多,而且能夠在這裏解決任務。正則表達式非常有用,但非常強大,難於理解並且容易出錯*。 – symcbean