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