Удалить текст внутри текста из строки большего размера с помощью PHP

#php #string #replace #shortcode

#php #строка #заменить #короткий код

Вопрос:

То, что я пытаюсь сделать, это, если он существует, удалить вхождение текста внутри «короткого кода», например: Here's some content [shortcode]I want this text removed[/shortcode] Some more content для изменения Here's some content [shortcode][/shortcode] Some more content .

Это кажется довольно простой вещью, но я не могу понять это .. =/

Короткий код будет отображаться только один раз во всей строке.

Заранее спасибо за помощь.

Ответ №1:

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

 $var = "Here's some content [shortcode]I want this text removed[/shortcode] Some more content";
$startTag = "[shortcode]";
$endTag = "[/shortcode]";
$pos1 = strpos($var, $startTag)   strlen($startTag);
$pos2 = strpos($var, $endTag);
$result = substr_replace($var, '', $pos1, $pos2-$pos1);
 

Комментарии:

1. Это не будет работать , если существует несколько блоков [shortcode]. Ниже я привел решение, которое будет отлично работать и для нескольких блоков.

Ответ №2:

Это очень легко сделать с помощью preg_replace() . Для вашей цели используйте /[shortcode].*[/shortcode]/ в качестве шаблона.

 $replace = "[shortcode][/shortcode]"; 
$filteredText = preg_replace("/[shortcode].*[/shortcode]/", $replace, $yourContent);
 

См. http://php.net/manual/en/function.preg-replace.php для получения более подробной информации.

Ответ №3:

Можно использовать strpos(), чтобы найти позицию [substring] и [/substring] в вашей строке и заменить текст пробелом через substr_replace()

Комментарии:

1. Это кажется лучшим подходом, потому что регулярное выражение для меня просто пугающее и сложное.

Ответ №4:

если вы не хотите беспокоиться о регулярных выражениях:

если у вас есть [shortcode] тег внутри строки, то это действительно не проблема: просто используйте вложенное использование substr:

 substr($string,0,strpos($string,'[substring]') 11) substr($string,strpos($string,'[/substring]'),strlen($string))
 

где первый substr сокращает строку до начала строки, которую нужно вырезать, а второй добавляет оставшийся материал строки.

смотрите здесь:

http://www.php.net/manual/en/function.substr.php

http://www.php.net/manual/en/function.strpos.php

Ответ №5:

используйте регулярное выражение в php, чтобы избавиться от него.

 preg_replace (shortcode, urText, '', 1)
 

Ответ №6:

 $string = "[shortcode]I want this text removed[/shortcode]"; 
$regex = "#[shortcode].*[/shortcode]#i"; 
$replace = "[shortcode][/shortcode]"; 
$newString = preg_replace ($regex, $replace, $string, -1 );  
 

Ответ №7:

 $content = "Here's some content [shortcode]I want this text removed[/shortcode] Some more content to be changed to Here's some content [shortcode][/shortcode] Some more content";
print preg_replace('@([shortcode])(.*?)([/shortcode])@', "$1$3", $content);
 

Выдает:

Вот некоторый контент [shortcode] [/ shortcode] Еще немного контента, который нужно изменить на Вот некоторый контент [shortcode] [/ shortcode] Еще немного контента