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