2014-11-05 64 views
0

我試圖改變字符串的某些部分。我使用了preg_replace()函數來完成這項工作,但我無法成功。Php preg_replace()using

這裏是一個例子。

$str = "Suspendisse rutrum rhoncus leo vitae vehicula. <span class="sdsad"> Nunc nec dapibus nisi.</span> Donec facilisis mauris sapien, eget blandit enim dignissim auctor. <span style="text-decoration: underline;" class="sadsad">Nullam a porta orci.</span>"; 

我需要得到部分與"<span"開始,畢竟直到">"性格特徵,並把它<p>或別的東西。

$str = preg_replace('/<span.*>/', '<p>', $str); 

我試圖解決這個問題,但它返回相同的值。

我需要做什麼?

謝謝。

回答

0

你忘了捕獲組在這裏()

$str = preg_replace('/<span(.*)>/', '<p>', $str); 

此處瞭解詳情: http://www.regular-expressions.info/brackets.html

+0

不幸的是我得到了同樣的結果。 – kbrk 2014-11-05 13:13:57

+0

@brk:我在http://infoheap.com/tool/php-preg_replace-sandbox/上測試了這個功能 - 完美地工作。也許某種緩存? – Xatenev 2014-11-05 13:15:41

+0

是的,它在該鏈接中正常工作。我試圖找到一些原因。 – kbrk 2014-11-05 13:30:10

1

這個表達式會做的伎倆爲您服務。

$str = 'Suspendisse rutrum rhoncus leo </span> vitae vehicula. <span class="sdsad"> Nunc nec dapibus nisi.</span> Donec facilisis mauris sapien, eget blandit enim dignissim auctor. <span style="text-decoration: underline;" class="sadsad">Nullam a porta orci.</span>'; 
$str_replaced = preg_replace('/<(\/{0,1})span[^>]*>/','<$1p>',$str); 
echo $str_replaced; 

它可以隨意的把結尾的斜線到標籤,所以你只需要一個電話。

+0

複雜嗎?! – Xatenev 2014-11-05 13:31:48

+0

沒有。通過這種方式,您將一次性使用替換爲

。 – 2014-11-05 13:34:18