Как удалить что-либо в строке после "-"?


Это пример моей строки.

$x = "John Chio - Guy";
$y = "Kelly Chua - Woman";

Мне нужен шаблон для замены reg.

$pattern = ??
$x = preg_replace($pattern, '', $x); 

Спасибо

 20
Author: Arseni Mourzenko, 2011-01-16

7 answers

Нет необходимости в регулярном выражении. Вы можете использовать explode:

$str = array_shift(explode('-', $str));

Или substr и strpos:

$str = substr($str, 0, strpos($str, '-'));

Возможно, в сочетании с trim чтобы удалить начальные и конечные пробелы.

Обновление: Как указывает @Mark, это не удастся, если часть, которую вы хотите получить, содержит -. Все зависит от вашего возможного вклада.

Поэтому, предполагая, что вы хотите удалить все после последнего тире, вы можете использовать strrpos, который находит последнее вхождение подстроки:

$str = substr($str, 0, strrpos($str, '-'));

Итак, вы видите, что регулярное выражение не требуется;)

 61
Author: Felix Kling, 2011-01-16 12:13:46

Чтобы удалить все после первого дефиса, вы можете использовать это регулярное выражение в своем коде:

"/-.*$/"

Чтобы удалить все после последнего дефиса, вы можете использовать это регулярное выражение:

"/-[^-]*$/"

Http://ideone.com/gbLA9

Вы также можете объединить это с обрезкой пробелов в конце результата:

"/\s*-[^-]*$/"
 9
Author: Mark Byers, 2011-01-16 12:05:37

Вы могли бы использовать strtok:

$x = strtok($x, '-');
 6
Author: Gumbo, 2011-01-16 11:57:35

Вы также можете использовать.

strstr( "John Chio - Guy", "-", true ) . '-';

Третий параметр true указывает функции возвращать все до первого вхождения второго параметра.

Источник на strstr() из php.net

 4
Author: user2453885, 2015-03-25 08:26:29

Я надеюсь, что эти шаблоны помогут вам =]

$pattern1='/.+(?=\s-)/'       //This will match the string before the " -";
$pattern2='/(?<=\s-\s).+/'    //This will match the string after the "- ";
 0
Author: deadlock, 2011-01-16 12:02:00

Взрыв или регулярное выражение - это перебор, попробуйте это:

$str = substr($str, 0, strpos($str,'-'));

Или версия strtok в одном из ответов здесь.

 0
Author: Chris Hasiński, 2011-01-16 12:04:31

Используйте функцию strstr.

Пример:

$my_string = "This is my best string - You like it?";
$my_new_string = strstr($my_string, '-', true);

echo($my_new_string);
 -1
Author: Geoffrey K. Kamundi, 2016-02-11 09:19:20