2013-12-18 5 views
0

У меня действительно проблема, в моей ситуации я выбираю информацию из базы данных MYSQL, сохраненную в $ data.preg_replace для замены всего переменной

и у меня есть 2 массива для preg_replace.

это пример:

$repl(); 
$repl[0] = '/bull/'; 
$repl[1] = '/found/'; 
$repl[2] = '/search/'; 

$replto(); 
$replto[0] = 'This is not a ballon'; 
$replto[1] = 'This has been found'; 
$replto[2] = 'Im looking for it'; 

$data = array(); 
$data[0] = '/mynickname/search'; 
$data[1] = '/somebulls/search'; 
$data[2] = '/mcdo/found'; 
$data[3] = '/bump/search'; 
$data[4] = '/blood/bull'; 

echo preg_replace($repl,$replto,$data); 

Хорошо, но выход preg_replace это:

/mynickname/Im looking for it 
/somebulls/Im looking for it 
/mcdo/This has been found 
/bump/Im looking for it 
/blood/This is not a ballon 

... но я хочу этот вывод:

Im looking for it 
Im looking for it 
This has been found 
Im looking for it 
This is not a ballon 

I 'm new in php, я решил много проблем, но это проблема, которую я не нашел.

Вы можете мне помочь?

+1

Смешение 'strrpos' (http://php.net/strrpos) и' substr' (http://php.net/substr) должно легко сделать трюк. –

+0

Ну, код работает точно так же, как у вас есть ... Я думаю, что ваша логика здесь некорректна. Если 'search' заменяется на' Im look for it', почему вы думаете, что '/ mynickname/search' автоматически удалит часть mynickname? Это только замена того, что вы ему сказали. – Charlie74

+0

wow ... легко? ... не для меня, я думал, что это просто дело с добавлением дополнения в preg_replace ... как в SQL при использовании% in LIKE. – user3114471

ответ

0

На основе результата вы хотите, это выглядит, как вы хотите сделать что-то вроде:

$repl(); 
$repl[0] = '/.*bull/'; 
$repl[1] = '/.*found/'; 
$repl[2] = '/.*search/'; 
+0

/* будет 0 или более вхождений /. Это не то, что вы ищете. Затем, кроме того,/используется как разделитель шаблонов, поэтому * действительно не знает, к чему обратиться. –

+0

Право; отредактировал ... –

+0

Огромное спасибо, он отлично работает. Не могу опросить этот ответ:/у меня нет репутации. Теперь я могу :) – user3114471

1

Большое спасибо она работает отлично.

положить как

$repl(); 
$repl[0] = '/.*bull/'; 
$repl[1] = '/.*found/'; 
$repl[2] = '/.*search/'; 

Извините за поздний ответ, не может прийти раньше.

Еще раз большое спасибо.

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