Может ли кто-нибудь сказать, как удалить символы после? в php. У меня есть один тест строки? = New Мне нужно удалить символы, а также = из этой строки.
Удалить все после символа в PHP
Ответ 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
сообщает функции вернуть все до первого появления второго параметра.