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

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

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

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

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

благодаря

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

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

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

или substr и strpos :

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

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

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

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

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

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

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

 "/-.*$/" 

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

 "/-[^-]*$/" 

http://ideone.com/gbLA9

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

 "/\s*-[^-]*$/" 

Вы можете использовать strtok :

 $x = strtok($x, '-'); 

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

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

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

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

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

 $pattern1='/.+(?=\s-)/' //This will match the string before the " -"; $pattern2='/(?<=\s-\s).+/' //This will match the string after the "- "; 

Explode или regexp являются излишним, попробуйте следующее:

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

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

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

Пример:

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