Заменить строку внутри строки с учетом начальной и конечной точек - PullRequest
0 голосов
/ 23 июня 2011

Не могли бы вы помочь мне, чтобы строка внутри строки, когда даны начало и конец. На самом деле я хочу удалить все содержимое между //[langStart-en] и //[langEnd-en] в следующем примере

//[langStart-en]  This is a test //[langEnd-en]

с использованием preg_replace. Я использовал следующий код

  $string = '//[langStart-en] This is a test //[langEnd-en]';
    $pattern = '/\/\/\[langStart-en\][^n]*\/\/\[langEnd-en\]/';
    $replacement = '//[langStart-en]//[langEnd-en]';
    $my_string = preg_replace($pattern, $replacement, $string);

    echo $my_string;

Это показывает следующую ошибку * * 1010 Пожалуйста, помогите

Ответы [ 5 ]

1 голос
/ 23 июня 2011

Зачем удалять строку между заданными строками, если вы можете объединить заданные вами строки. Они дадут вам тот же результат.

string c = a + b;
1 голос
/ 23 июня 2011

Вот, пожалуйста:

// [langStart-en] // [langEnd-en]

Для тех из вас, у кого меньше чувства юмора - позор вам.Но вот ответ.

var str = '//[langStart-en] This is a test //[langEnd-en]';
str.replace(/\/\/\[langStart-en\].+\/\/\[langEnd-en\]/g, '//[langStart-en]//[langEnd-en]');
0 голосов
/ 23 июня 2011
$string = '//[langStart-en] This is a test //[langEnd-en]';
$string = preg_replace(
      '/\/\/\[langStart-en\][\s\S]+?\/\/\[langEnd-en\]/',
      '//[langStart-en]//[langEnd-en]',
      $string
 );
0 голосов
/ 23 июня 2011

Не уверен, какой язык вы используете для этого.

Но большинство языков имеют функцию indexof.

var mystring - "cccctestoooabcccc"; var i = mystring.indexof ("test"); var x = mystring.indexof ("abc");

С этими индексами вы можете использовать такую ​​функцию, как подстрока (startindex, endindex);

Хотя вам придется сложить или вычесть длину вашей строки (test или abc) Поскольку индекс имеет местоположение первого символа. Так я = 4 и х = 11 Вы хотели бы вытащить подстроку между ((я + "тест". длина), х) Надеюсь вытащить подстроку "ооо"

Это грубо, но должно дать вам общее представление.

0 голосов
/ 23 июня 2011

Да, я не хочу быть саркастичным.

$my_string = '//[langStart-en]//[langEnd-en]';

или

$string = '//[langStart-en] This is a test //[langEnd-en]';
$pattern = '/\/\/\[langStart-en\][^n]*\/\/\[langEnd-en\]/';
$replacement = '//[langStart-en]//[langEnd-en]';
$my_string = preg_replace($pattern, $replacement, $string);

echo $my_string;
...