#php #regex #php-5.3
#php #регулярное выражение #php-5.3
Вопрос:
Как я могу получить строку, которая помещается в два символа звезды — * — как StackOverflow здесь?
Например,
$string_1 = 'this is the *string I want to display only*';
или
$string_2 = 'this is the * string I want to display only *';
обратите внимание, что во второй строке есть пробелы.
Я хочу вернуть только это,
string I want to display only
Использование регулярных выражений — это то, о чем я могу думать … есть идеи?
Комментарии:
1. Это несколько недоопределено. Что вы хотите, чтобы произошло, если строка содержит более двух
*
символов?2. хороший вопрос! Я думаю, тогда он должен вернуть всю строку со звездами.
3. Это StackOverflow. Это вверху каждой страницы; Я не уверен, как вы дважды ошиблись в написании. 🙂
4. извините, Кен… сейчас поздняя ночь … lol
Ответ №1:
Вы можете сделать это с помощью простого регулярного выражения:
Это сохранит все совпадения в переменной matches
.
$string = "This string *has more* than one *asterisk group*";
preg_match_all('/*([^*] )*/', $string, $matches);
var_dump($matches[1]);
Ответ №2:
Попробуйте это
$string_1 = 'this is the *string I want to display only*';
if(preg_match_all('/*(.*?)*/',$string_1,$match)) {
var_dump($match[1]);
}
Комментарии:
1. Это не будет работать так же хорошо, как ответ танду. Строка
hello *cruel* *world*
вернет только один результат :cruel* *world
.
Ответ №3:
Решение для регулярных выражений
$string_2 = 'this is the * string I want to display only *';
$pattern = "/(*) [s]*[a-zA-Zs]*[s]*(*) /";
preg_match($pattern, $string_2, $matches);
echo $matches[0];
Решение строковых функций PHP, используя: strpos(), strlen() и substr()
$string = 'this is the * string I want to display only *';
$findme = '*';
$pos = strpos($string, $findme); // get first '*' position
if ($pos !== FALSE) {
// a new partial string starts from $pos to the end of the input string
$part = substr($string,$pos 1,strlen($string));
// a new partial string starts from the beginning of $part to the first occurrence of '*' in $part
echo substr($part,0,strpos($part, $findme));
}