2011-11-21 44 views
0

我只想知道,preg_replace函數的替換是什麼。mb_ereg_replace獲取匹配

有沒有可能得到這個?

例如:

$string = "test text 12345"; 

$string = mb_ereg_replace('#text|test#', '$1-test2',$string); 

我想知道, 「文本」 和 「試驗」 是否匹配?或者正在調用preg_match absoulutely是必要的?

+0

你想匹配還是替換?或者你想知道它是否真的取代了什麼?如果是這樣,你可以在替換之前和之後比較$ string。 – Znarkus

+0

我想替換,並匹配替換...但對我來說,它看起來不好,當我打電話替換和匹配功能,因爲我認爲他們做同樣=>匹配 – MnomrAKostelAni

回答

1

您可以通過引用計數變量傳遞到了preg_replace這將返回發生的匹配/替換次數。

http://php.net/manual/en/function.preg-replace.php

$string = "test text 12345"; 
$count = 0; 
$string = preg_replace('text', 'test2', $string, -1, $count); 
echo $count; // 1 
+0

請注意,這個答案是針對原始preg_replace問題 – hafichuk

+0

謝謝,但它沒有提供匹配的短語。 :) – MnomrAKostelAni

+1

@maka我不知道我明白。你知道匹配的短語是什麼:'test'。僅供參考,我建議您刪除此問題,因爲您對它所做的更改已使所有給出的答案無效。 – hafichuk

0

那麼...你可以用preg_replace_callback()來代替,這樣你就可以爲每一個匹配調用一個自定義函數。然後,您將能夠「看到」比賽以及以您想要的方式替換比賽。

+0

謝謝,但我使用mb_ereg_replace,並且我找不到一個mb_ereg_replace_callback函數... – MnomrAKostelAni

0

如果它不是您想要查找的模式,而只是字符串中的文本,則可以使用strstr

$findthis = "Apple"; 
$container = "Apple Orange Kiwi"; 

if (strstr($container,$findthis)) 
    echo $findthis.' is present'; 
else 
    echo 'Not found'; 
} 
+0

對不起,但它是一個模式 – MnomrAKostelAni

+0

好的,然後不要我的答案。 :) – djdy

0

使用preg_match()來測試,如果你想獲得問題preg_replace_callback()這也是一個解決方案,然後preg_replace()

0

如果所有你想要做的是:

  1. 用一個簡單的字符串替換(例如,texttest2
  2. 找出任何東西是否被替換。

在這種情況下,我會簡單地使用str_replace()更換,隨後strcmp()告訴字符串是否改變(即,進行了替換。)

0

試試這個:

$string = 'test text 12345'; 
if ($string != ($replaced = preg_replace('/text/', 'test2', $string))) { 
    echo 'text was replaced'; 
} 

但如果你真的不需要了preg_replace,你應該使用或的strstr stristr。