Удалить текст внутри текста из большей строки с помощью PHP - PullRequest
1 голос
/ 31 октября 2011

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

Похоже,довольно простая вещь, но я не могу понять это .. = /

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

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

Ответы [ 7 ]

2 голосов
/ 31 октября 2011

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

$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);
2 голосов
/ 31 октября 2011

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

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

Подробнее см. http://php.net/manual/en/function.preg-replace.php.

1 голос
/ 31 октября 2011

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

если у вас есть тег [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

1 голос
/ 31 октября 2011

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

0 голосов
/ 31 октября 2011
$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] Некоторый контент

0 голосов
/ 31 октября 2011
$string = "[shortcode]I want this text removed[/shortcode]"; 
$regex = "#\[shortcode\].*\[\/shortcode\]#i"; 
$replace = "[shortcode][/shortcode]"; 
$newString = preg_replace ($regex, $replace, $string, -1 );  
0 голосов
/ 31 октября 2011

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

preg_replace (shortcode, urText, '', 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...