Это пример моей строки.
$x = "John Chio - Guy"; $y = "Kelly Chua - Woman";
Мне нужен шаблон для замены reg.
$pattern = ?? $x = preg_replace($pattern, '', $x);
благодаря
Нет необходимости в регулярном выражении. Вы можете использовать explode
:
$str = array_shift(explode('-', $str));
или substr
и strpos
:
$str = substr($str, 0, strpos($str, '-'));
Возможно, в сочетании с trim
чтобы удалить ведущие и завершающие пробелы.
Обновление: как указывает @Mark, это не удастся, если в части, которую вы хотите получить, содержится. Все зависит от вашего возможного ввода.
Поэтому, предполагая, что вы хотите удалить все после последней тире, вы можете использовать strrpos
, который находит последнее вхождение подстроки:
$str = substr($str, 0, strrpos($str, '-'));
Итак, вы видите, нет регулярного выражения, необходимого;)
Чтобы удалить все после первого дефиса, вы можете использовать это регулярное выражение в своем коде:
"/-.*$/"
Чтобы удалить все после последнего дефиса, вы можете использовать это регулярное выражение:
"/-[^-]*$/"
Вы также можете комбинировать это с обрезкой пробела с конца результата:
"/\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);