Подтвердить что ты не робот

Удалить все после символа в PHP

Может ли кто-нибудь сказать, как удалить символы после? в php. У меня есть один тест строки? = New Мне нужно удалить символы, а также = из этой строки.

4b9b3361

Ответ 1

Самый короткий:

echo strtok('test?=new', '?');

Если вы хотите сохранить знак вопроса, решение будет почти таким же:

echo strtok('test?=new', '?').'?';

Ответ 2

В этом решении используется простое регулярное выражение для удаления символа ? и всех последующих символов.

$string = "test?p=new";
$new_string = preg_replace("/\?.+/", "", $string);

Ответ 3

Почему бы и нет:

$pos = strpos($str, '?'); // ? position
$str = substr($str, 0, $pos);

Ответ 4

Вы можете сделать это с хорошо написанным регулярным выражением, но гораздо более простой и быстрый способ сделать это - взорвать строку на "?" символ и использовать первый элемент в результирующем массиве.

$str = "test?=new";
$str2 = explode("?", $str);
$use_this = $str2[0];

$use_this [0] будет "test". Если вы хотите добавить "?" назад, просто соедините:

$use_this = $use_this."?";

Ответ 5

Вы всегда можете попробовать использовать preg_replace():

$string = 'test?q=new';
$result = preg_replace("/\?.+/", "", $string);

Если по какой-то причине вы хотите сохранить ? в результате... вы также можете сделать это:

$string = 'test?q=new';
$result = preg_replace("/\?.+/", "?", $string);

(или вы могли бы использовать положительное утверждение look-behind, как предположил @BlueJ774):

$result = preg_replace("/(?<=\?).+/", "", $string);

Но в идеале, а для будущей ссылки, если вы работаете с строкой запроса, вы, вероятно, захотите использовать parse_str в какой-то момент, например:

$string = 'test?q=new';
parse_str($string, $output);

Потому что это даст вам массив ($output, в данном случае), с которым нужно работать со всеми частями строки запроса, например:

Array
(
    [test?q] => new
)

Но обычно... вы, вероятно, просто захотите работать с строкой запроса к этому моменту... так что результат будет примерно таким:

Array
(
    [q] => new
)

Ответ 6

Вот однострочный:

$s = strpos($s, '?') !== FALSE ? strtok($s, '?') : $s;

Вы можете протестировать его в следующей командной строке:

php -r '$s = "123?456"; $s = strpos($s, "?") !== FALSE ? strtok($s, "?") : $s; echo $s;'

Ответ 7

substr и strpos

Самый простой способ сделать это - substr() DOCs и strpos() DOCs.

$string = 'test?=new';
$cut_position = strpos($string, '?') + 1; // remove the +1 if you don't want the ? included
$string = substr($string, 0, $cut_position);

Как вы можете видеть, substr() извлекает подстроку из строки по индексу и strpos() возвращает индекс первого экземпляра символа, который он ищет (в данном случае ?).

Ответ 8

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

<?php
$myString = "test?=new";
$result = strstr($myString, '=', true);

echo $result ;

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