2013-08-20 3 views
1

Я хочу использовать регулярное выражение в моем str_replace, я полагаю, правильным решением для этого было бы использовать preg_replace, но я не знаю, как его использовать. В любом случае, я хочу превратить src= в символ a, если он соответствует src= или если у него есть свободные промежутки между src и =. Обычно просто включите SRC = было бы:regexp in php str_replace

$string = str_replace('src=', 'a', $string); 

Но проблема в том, что не будет работать, если есть пространство (s) между ЦСИ и =. Вот почему мне нужно использовать регулярное выражение. Спасибо за любую помощь.

+0

Вот почему http://php.net/manual/en/function.preg-replace.php существует :) Для справки в будущем всегда помните о Google, запрос 'regexp в php str_replace' приведет вас к правильному там. –

ответ

1
$string = preg_replace('/src\s*=/i', 'a', $string); 

что означает, что RegEx является "матч ЦСИ следует 0 или более пробелов followe d by = ".

+0

Если нет whitspace, это не удастся. используйте '*' вместо '+'. Во-вторых, '=' не является специальным символом, поэтому не требуется экранирование. – dognose

+0

@dognose Исправлено. – federicot

+0

@ Камари Ницца, только еще одна настройка. Как я могу сделать регистр src нечувствительным? –

0

preg_replace просто работает как str_replace:

$new_string = preg_replace($pattern, $replacement, $old_string); 

Узор в вашем случае будет "@src\s*[email protected]" (\s* охватывает от нуля до бесконечного непечатаемых, @ только один из возможных различных разделителей шаблон требует, i (после того, как последний разделитель) делает случай шаблон нечувствительным.)

0

Используйте preg_replace и следующую закономерность:

src(?:\s+)?=

Сплит это вверх:

  • src, очевидно, находит "SRC" часть
  • (?:\s+)? находит 0 или больше места (ы)
  • =, чтобы закончить его, находит «=»

Так в целом, было бы:

$new_string = preg_replace("/src(?:\s+)?=/i", 'a', $string);

Надеется, что это помогает!

+0

'(?: \ S +)?' == '\ s *' – dognose