2011-01-13 3 views
1

У меня есть длинная строка, которая вложена в нем: "ABC_1_" и "ABC_2_" и "ABC_3_" т.д.PHP регулярное выражение - Удалить фразу

Например:

"lorum ipsum ABC_1_ doit more ABC_3_ and so on". 

Мне нужно написать PHP preg_replace, что приведет к удалению в 6-ти символов (ABC_xx), если первые 4 являются "ABC_" и вернуть всю оставшуюся строку, в моем примере:

"lorum ipsum doit more and so on". 

Спасибо!

ответ

2

Попробуйте это:

$s = preg_replace('/\bABC_../', '', $s); 

\b соответствует границе слова, а многоточие любого символа (кроме новой строки).

Полный пример:

<?php 
$s = 'ABC_1_foo lorum ipsum ABC_1_ doit more ABC_3_ and so on'; 
$s = preg_replace('/\bABC_../', '', $s); 
echo $s; 
?> 

Результат:

 
foo lorum ipsum doit more and so on 

(ideone)

+0

й это работы. Я удалил \ b, потому что фраза не может быть на границе слова. Но я не уточнил это в своем вопросе. БЛАГОДАРЯ!!! – sdfor

+0

@sdfor: Причина границы слова была так, что она не случайно совпала с DABC_D_. Но если вы хотите, чтобы это соответствовало да, вам не нужна граница слова. –

3

Использование preg_replace с регулярным выражением: (ABC_.{2})

$string = "lorum ipsum ABC_1_ doit more ABC_3_ and so on"; 
$pattern = "/(ABC_.{2})/"; 
$replacement = ""; 
echo preg_replace($pattern, $replacement, $string); 
+0

Спасибо! Симпатичный значок басового ключа! – sdfor

+0

Id не знал, как это называется. Теперь я знаю :) – Chandu

Смежные вопросы