Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP function to delete all between certain character(s) in string

Tags:

string

php

I'm interested in function delete_all_between($char1, $char2, $string) that will search given $string for $char1 and $char2 and, if such has been found, clear $string from substring between these two characters, including $char1 and $char2 itself.

Example:

$string = 'Some valid and <script>some invalid</script> text!'; delete_all_between('<script>', '</script>', $string); 

Now, $string should contain just

'Some valid and  text'; //note two spaces between 'and  text' 

Does someone have quick solution?

like image 253
Miloš Đakonović Avatar asked Oct 23 '12 13:10

Miloš Đakonović


People also ask

How can I remove all characters from a specific character in PHP?

The substr() and strpos() function is used to remove portion of string after certain character. strpos() function: This function is used to find the first occurrence position of a string inside another string.

How do you remove portion of a string before a certain character in PHP?

You can use strstr to do this. Show activity on this post. The explode is in fact a better answer, as the question was about removing the text before the string.

How can I remove multiple special characters from a string in PHP?

function clean($string) { $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens. return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars. }

What does the chop () string function remove?

The chop() function removes whitespaces or other predefined characters from the right end of a string.


1 Answers

<?php  $string = 'Some valid and <script>some invalid</script> text!'; $out = delete_all_between('<script>', '</script>', $string); print($out);  function delete_all_between($beginning, $end, $string) {   $beginningPos = strpos($string, $beginning);   $endPos = strpos($string, $end);   if ($beginningPos === false || $endPos === false) {     return $string;   }    $textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);    return delete_all_between($beginning, $end, str_replace($textToDelete, '', $string)); // recursion to ensure all occurrences are replaced } 
like image 74
Tim S Avatar answered Sep 16 '22 23:09

Tim S